{"version":3,"sources":["E:/jenkins_home/workspace/_agenda-unco-front-legacy_master/frontend-web/~/bootstrap-datepicker/js/bootstrap-datepicker.js","E:/jenkins_home/workspace/_agenda-unco-front-legacy_master/frontend-web/~/bootstrap-datepicker/js/locales/bootstrap-datepicker.es.js","E:/jenkins_home/workspace/_agenda-unco-front-legacy_master/frontend-web/~/bootstrap-timepicker/js/bootstrap-timepicker.js","E:/jenkins_home/workspace/_agenda-unco-front-legacy_master/frontend-web/~/jquery/dist/jquery.js","E:/jenkins_home/workspace/_agenda-unco-front-legacy_master/frontend-web/~/script-loader/addScript.js","E:/jenkins_home/workspace/_agenda-unco-front-legacy_master/frontend-web/~/bootstrap-datepicker/js/bootstrap-datepicker.js?e0a7","E:/jenkins_home/workspace/_agenda-unco-front-legacy_master/frontend-web/~/bootstrap-datepicker/js/locales/bootstrap-datepicker.es.js?dd64","E:/jenkins_home/workspace/_agenda-unco-front-legacy_master/frontend-web/~/bootstrap-timepicker/js/bootstrap-timepicker.js?d997","E:/jenkins_home/workspace/_agenda-unco-front-legacy_master/frontend-web/~/jquery/dist/jquery.js?12e8"],"names":[],"mappings":";;;;;AAAA,kaAAka,wkBAAwkB,yDAAyD,wCAAwC,OAAO,wCAAwC,qCAAqC,OAAO,OAAO,0BAA0B,OAAO,GAAG,wBAAwB,uBAAuB,uDAAuD,KAAK,wBAAwB,6BAA6B,6EAA6E,KAAK,wCAAwC,yLAAyL,KAAK,2CAA2C,wBAAwB,2CAA2C,qDAAqD,SAAS,qDAAqD,QAAQ,KAAK,6BAA6B,sCAAsC,KAAK,kCAAkC,oBAAoB,yBAAyB,kCAAkC,SAAS,+BAA+B,gDAAgD,mFAAmF,sCAAsC,OAAO,mMAAmM,oBAAoB,SAAS,6BAA6B,2BAA2B,SAAS,sCAAsC,4CAA4C,wEAAwE,uBAAuB,2CAA2C,SAAS,2BAA2B,0BAA0B,SAAS,0BAA0B,kCAAkC,0BAA0B,mBAAmB,SAAS,QAAQ,0BAA0B,mBAAmB,mCAAmC,4BAA4B,iBAAiB,QAAQ,KAAK,IAAI,0EAA0E,0CAA0C,qCAAqC,qCAAqC,6CAA6C,4BAA4B,kCAAkC,8CAA8C,iFAAiF,sHAAsH,uFAAuF,gEAAgE,2CAA2C,wGAAwG,mEAAmE,OAAO,gEAAgE,oEAAoE,OAAO,4BAA4B,2BAA2B,2BAA2B,yEAAyE,OAAO,YAAY,kEAAkE,OAAO,wBAAwB,+CAA+C,OAAO,mCAAmC,gKAAgK,mCAAmC,WAAW,EAAE,OAAO,+BAA+B,0OAA0O,EAAE,mCAAmC,yCAAyC,gCAAgC,uBAAuB,wBAAwB,sBAAsB,2BAA2B,oBAAoB,OAAO,MAAM,8BAA8B,uEAAuE,yDAAyD,oEAAoE,qBAAqB,yBAAyB,WAAW,SAAS,EAAE,sBAAsB,OAAO,kDAAkD,sFAAsF,yCAAyC,OAAO,wCAAwC,aAAa,uEAAuE,yBAAyB,WAAW,6FAA6F,wBAAwB,WAAW,iEAAiE,iCAAiC,SAAS,oBAAoB,uBAAuB,SAAS,OAAO,0CAA0C,uEAAuE,iBAAiB,gEAAgE,WAAW,2JAA2J,0BAA0B,oCAAoC,gEAAgE,SAAS,0BAA0B,0GAA0G,6DAA6D,6DAA6D,4IAA4I,yEAAyE,qDAAqD,uFAAuF,SAAS,4DAA4D,2BAA2B,0CAA0C,sDAAsD,uCAAuC,6BAA6B,yHAAyH,oHAAoH,WAAW,gBAAgB,oCAAoC,WAAW,SAAS,oCAAoC,2BAA2B,mHAAmH,gHAAgH,WAAW,gBAAgB,iCAAiC,WAAW,SAAS,mFAAmF,uFAAuF,gDAAgD,0CAA0C,uDAAuD,SAAS,6DAA6D,+EAA+E,SAAS,EAAE,oHAAoH,yCAAyC,2DAA2D,SAAS,EAAE,yBAAyB,sBAAsB,gDAAgD,gDAAgD,0BAA0B,wFAAwF,oBAAoB,wFAAwF,oBAAoB,WAAW,SAAS,cAAc,4CAA4C,6CAA6C,WAAW,EAAE,8CAA8C,8CAA8C,6CAA6C,WAAW,EAAE,8CAA8C,SAAS,yFAAyF,4GAA4G,SAAS,8BAA8B,wEAAwE,mDAAmD,+CAA+C,wDAAwD,SAAS,OAAO,yCAAyC,SAAS,OAAO,gFAAgF,iCAAiC,gBAAgB,MAAM,yBAAyB,mCAAmC,2BAA2B,2BAA2B,WAAW,+BAA+B,2BAA2B,2BAA2B,WAAW,wBAAwB,SAAS,OAAO,qCAAqC,iCAAiC,gBAAgB,MAAM,yBAAyB,mCAAmC,2BAA2B,2BAA2B,WAAW,+BAA+B,2BAA2B,2BAA2B,WAAW,yBAAyB,SAAS,OAAO,gCAAgC,4BAA4B,6CAA6C,+HAA+H,mBAAmB,iIAAiI,kDAAkD,0DAA0D,eAAe,mCAAmC,kHAAkH,eAAe,4GAA4G,2MAA2M,gFAAgF,qBAAqB,eAAe,cAAc,sDAAsD,6GAA6G,aAAa,SAAS,uHAAuH,sCAAsC,4CAA4C,aAAa,kBAAkB,0EAA0E,sCAAsC,4CAA4C,aAAa,kBAAkB,WAAW,wCAAwC,gHAAgH,0DAA0D,kCAAkC,aAAa,kBAAkB,GAAG,SAAS,4DAA4D,uDAAuD,2CAA2C,gEAAgE,yBAAyB,wDAAwD,2BAA2B,wDAAwD,0TAA0T,4BAA4B,eAAe,aAAa,kBAAkB,WAAW,OAAO,iCAAiC,6BAA6B,wCAAwC,OAAO,iCAAiC,0CAA0C,OAAO,0CAA0C,sCAAsC,iDAAiD,OAAO,0CAA0C,mDAAmD,OAAO,0CAA0C,iGAAiG,gCAAgC,yLAAyL,wCAAwC,yCAAyC,qCAAqC,aAAa,kCAAkC,0BAA0B,yCAAyC,aAAa,6CAA6C,0CAA0C,sEAAsE,WAAW,gBAAgB,EAAE,OAAO,0BAA0B,yIAAyI,4EAA4E,qBAAqB,2BAA2B,sCAAsC,8BAA8B,+GAA+G,iCAAiC,SAAS,oBAAoB,OAAO,0BAA0B,+EAA+E,8BAA8B,oCAAoC,sCAAsC,2CAA2C,mFAAmF,8BAA8B,oBAAoB,OAAO,6BAA6B,oBAAoB,6BAA6B,sCAAsC,6BAA6B,8CAA8C,2BAA2B,0CAA0C,SAAS,oBAAoB,OAAO,4BAA4B,uBAAuB,mKAAmK,2EAA2E,SAAS,iCAAiC,4DAA4D,SAAS,OAAO,iBAAiB,SAAS,iCAAiC,sBAAsB,2BAA2B,OAAO,sCAAsC,mBAAmB,qBAAqB,SAAS,kFAAkF,sEAAsE,gFAAgF,SAAS,uBAAuB,OAAO,sCAAsC,sFAAsF,OAAO,mCAAmC,yFAAyF,OAAO,qCAAqC,yFAAyF,OAAO,8BAA8B,qDAAqD,OAAO,iCAAiC,6CAA6C,6BAA6B,SAAS,EAAE,OAAO,6BAA6B,qDAAqD,OAAO,gCAAgC,+CAA+C,0CAA0C,yCAAyC,SAAS,OAAO,sBAAsB,SAAS,OAAO,gCAAgC,gCAAgC,sBAAsB,oCAAoC,iCAAiC,sBAAsB,SAAS,OAAO,8BAA8B,sEAAsE,sCAAsC,oCAAoC,wBAAwB,oBAAoB,OAAO,iCAAiC,sEAAsE,mEAAmE,oBAAoB,OAAO,kOAAkO,gDAAgD,uCAAuC,oBAAoB,OAAO,4CAA4C,kEAAkE,qCAAqC,6CAA6C,sDAAsD,SAAS,kCAAkC,OAAO,kCAAkC,gCAAgC,OAAO,2CAA2C,+BAA+B,qBAAqB,EAAE,sBAAsB,+BAA+B,oBAAoB,OAAO,gCAAgC,8BAA8B,OAAO,uCAAuC,+BAA+B,iBAAiB,EAAE,sBAAsB,+BAA+B,oBAAoB,OAAO,6DAA6D,+BAA+B,uCAAuC,EAAE,sBAAsB,oBAAoB,OAAO,mEAAmE,+BAA+B,6CAA6C,EAAE,sBAAsB,oBAAoB,OAAO,mDAAmD,+BAA+B,6BAA6B,EAAE,sBAAsB,oBAAoB,OAAO,2BAA2B,gDAAgD,2WAA2W,kCAAkC,+CAA+C,kDAAkD,wGAAwG,SAAS,EAAE,+EAA+E,+FAA+F,yGAAyG,sGAAsG,mDAAmD,gDAAgD,4CAA4C,2BAA2B,SAAS,kKAAkK,+CAA+C,4EAA4E,yFAAyF,SAAS,uHAAuH,gCAAgC,sJAAsJ,gDAAgD,WAAW,+CAA+C,qJAAqJ,0CAA0C,WAAW,OAAO,6BAA6B,+FAA+F,aAAa,OAAO,6FAA6F,aAAa,WAAW,SAAS,4MAA4M,gCAAgC,2DAA2D,wDAAwD,SAAS,+DAA+D,yGAAyG,oCAAoC,2BAA2B,mDAAmD,2BAA2B,mFAAmF,EAAE,SAAS,OAAO,2BAA2B,iFAAiF,EAAE,SAAS,oBAAoB,OAAO,sDAAsD,sDAAsD,2FAA2F,8BAA8B,sDAAsD,mFAAmF,6BAA6B,WAAW,SAAS,0BAA0B,SAAS,OAAO,mIAAmI,mGAAmG,0CAA0C,0CAA0C,SAAS,sDAAsD,mGAAmG,SAAS,SAAS,qDAAqD,yFAAyF,SAAS,eAAe,kCAAkC,sCAAsC,yFAAyF,2GAA2G,uGAAuG,iEAAiE,SAAS,wBAAwB,+DAA+D,gCAAgC,SAAS,oCAAoC,uGAAuG,wCAAwC,kCAAkC,WAAW,eAAe,oDAAoD,qCAAqC,gCAAgC,SAAS,sBAAsB,oBAAoB,OAAO,6BAA6B,8DAA8D,kCAAkC,0CAA0C,OAAO,SAAS,8CAA8C,oCAAoC,kGAAkG,6EAA6E,SAAS,wBAAwB,gEAAgE,OAAO,gCAAgC,0DAA0D,sBAAsB,oBAAoB,uBAAuB,QAAQ,MAAM,8EAA8E,8GAA8G,SAAS,6DAA6D,OAAO,mCAAmC,gEAAgE,4DAA4D,+BAA+B,WAAW,EAAE,oBAAoB,OAAO,uCAAuC,gJAAgJ,4GAA4G,0BAA0B,SAAS,0GAA0G,0BAA0B,SAAS,wGAAwG,oIAAoI,4BAA4B,SAAS,0EAA0E,yCAAyC,+BAA+B,SAAS,uCAAuC,gDAAgD,SAAS,8EAA8E,kCAAkC,SAAS,0BAA0B,8EAA8E,8BAA8B,WAAW,4DAA4D,iCAAiC,WAAW,gDAAgD,oCAAoC,WAAW,kEAAkE,kCAAkC,WAAW,SAAS,mBAAmB,OAAO,mGAAmG,sBAAsB,+BAA+B,8CAA8C,0DAA0D,yCAAyC,+EAA+E,qDAAqD,8DAA8D,SAAS,EAAE,uCAAuC,2CAA2C,0BAA0B,mBAAmB,+BAA+B,yBAAyB,8CAA8C,gCAAgC,WAAW,sCAAsC,gCAAgC,WAAW,oDAAoD,mCAAmC,WAAW,yDAAyD,qCAAqC,WAAW,uCAAuC,oCAAoC,WAAW,sCAAsC,uDAAuD,uCAAuC,0BAA0B,aAAa,wCAAwC,wBAAwB,iBAAiB,aAAa,uCAAuC,wBAAwB,iBAAiB,aAAa,2CAA2C,uCAAuC,aAAa,iCAAiC,qEAAqE,aAAa,iCAAiC,uCAAuC,aAAa,WAAW,4IAA4I,SAAS,wEAAwE,mCAAmC,OAAO,0BAA0B,iwBAAiwB,yDAAyD,yIAAyI,sHAAsH,sHAAsH,+HAA+H,+BAA+B,0BAA0B,uFAAuF,qFAAqF,4CAA4C,8CAA8C,+DAA+D,SAAS,0DAA0D,wCAAwC,sBAAsB,6BAA6B,gDAAgD,0CAA0C,4CAA4C,8BAA8B,sCAAsC,gwBAAgwB,+DAA+D,aAAa,WAAW,kDAAkD,8BAA8B,iDAAiD,yEAAyE,+DAA+D,yEAAyE,iBAAiB,wEAAwE,iBAAiB,gFAAgF,oGAAoG,sEAAsE,WAAW,2LAA2L,4CAA4C,WAAW,OAAO,wCAAwC,WAAW,sOAAsO,yBAAyB,0CAA0C,+BAA+B,WAAW,2DAA2D,SAAS,uEAAuE,sGAAsG,oPAAoP,4CAA4C,oGAAoG,SAAS,EAAE,kDAAkD,sCAAsC,SAAS,gCAAgC,2DAA2D,SAAS,8BAA8B,wDAAwD,SAAS,iDAAiD,0BAA0B,4CAA4C,8CAA8C,wDAAwD,+DAA+D,yEAAyE,iBAAiB,wEAAwE,iBAAiB,yHAAyH,iFAAiF,sFAAsF,WAAW,EAAE,SAAS,kOAAkO,4OAA4O,sPAAsP,OAAO,qCAAqC,iDAAiD,ujBAAujB,+BAA+B,uFAAuF,kEAAkE,kBAAkB,0CAA0C,yEAAyE,yEAAyE,6HAA6H,oFAAoF,kBAAkB,SAAS,4EAA4E,0EAA0E,OAAO,4BAA4B,2BAA2B,4BAA4B,4CAA4C,6BAA6B,4HAA4H,8CAA8C,SAAS,qGAAqG,8BAA8B,kFAAkF,SAAS,0EAA0E,4BAA4B,SAAS,4CAA4C,mEAAmE,wCAAwC,kDAAkD,gDAAgD,oEAAoE,oDAAoD,8CAA8C,+EAA+E,4BAA4B,4CAA4C,6DAA6D,iBAAiB,eAAe,0CAA0C,4DAA4D,eAAe,aAAa,qDAAqD,WAAW,8NAA8N,wCAAwC,sBAAsB,qCAAqC,iEAAiE,oDAAoD,+CAA+C,aAAa,OAAO,wBAAwB,2CAA2C,iDAAiD,aAAa,oFAAoF,wDAAwD,uDAAuD,aAAa,OAAO,kDAAkD,0BAA0B,aAAa,WAAW,SAAS,gEAAgE,qCAAqC,SAAS,kCAAkC,OAAO,qEAAqE,iCAAiC,mDAAmD,iCAAiC,gEAAgE,SAAS,2DAA2D,0EAA0E,oBAAoB,OAAO,2CAA2C,2CAA2C,mBAAmB,6BAA6B,SAAS,yBAAyB,wFAAwF,kCAAkC,WAAW,SAAS,uCAAuC,6BAA6B,gCAAgC,SAAS,cAAc,gCAAgC,SAAS,0IAA0I,OAAO,yCAAyC,gGAAgG,mHAAmH,sBAAsB,wBAAwB,yCAAyC,sCAAsC,SAAS,0CAA0C,8DAA8D,sBAAsB,SAAS,OAAO,sCAAsC,qCAAqC,oDAAoD,yBAAyB,OAAO,uCAAuC,2CAA2C,OAAO,wCAAwC,uEAAuE,uCAAuC,uLAAuL,+BAA+B,uBAAuB,2LAA2L,sDAAsD,aAAa,6JAA6J,0DAA0D,cAAc,kCAAkC,0CAA0C,0HAA0H,SAAS,cAAc,kFAAkF,SAAS,uIAAuI,4GAA4G,mCAAmC,4BAA4B,wDAAwD,YAAY,SAAS,8HAA8H,qCAAqC,0CAA0C,SAAS,wBAAwB,OAAO,uCAAuC,4CAA4C,OAAO,oDAAoD,YAAY,qCAAqC,qEAAqE,2BAA2B,SAAS,0CAA0C,sBAAsB,OAAO,8CAA8C,6EAA6E,OAAO,wCAAwC,+GAA+G,wCAAwC,WAAW,sBAAsB,OAAO,yCAAyC,kEAAkE,OAAO,8BAA8B,yCAAyC,qDAAqD,wDAAwD,gCAAgC,WAAW,iBAAiB,SAAS,iHAAiH,2BAA2B,4DAA4D,oCAAoC,kEAAkE,0BAA0B,aAAa,0CAA0C,+BAA+B,gCAAgC,kBAAkB,gNAAgN,gEAAgE,sCAAsC,6BAA6B,iFAAiF,+FAA+F,eAAe,sBAAsB,kFAAkF,gGAAgG,eAAe,gDAAgD,gFAAgF,eAAe,iDAAiD,iFAAiF,eAAe,aAAa,gCAAgC,yDAAyD,8BAA8B,eAAe,gFAAgF,aAAa,gCAAgC,yDAAyD,8BAA8B,eAAe,+EAA+E,aAAa,6BAA6B,2DAA2D,8BAA8B,0BAA0B,iCAAiC,aAAa,kBAAkB,kFAAkF,8EAA8E,4CAA4C,gDAAgD,iCAAiC,aAAa,kCAAkC,gEAAgE,4BAA4B,wBAAwB,4CAA4C,iCAAiC,kCAAkC,+DAA+D,aAAa,kBAAkB,0DAA0D,gEAAgE,wBAAwB,wBAAwB,kBAAkB,SAAS,yBAAyB,wEAAwE,qDAAqD,4CAA4C,SAAS,OAAO,yCAAyC,iCAAiC,+JAA+J,+BAA+B,iEAAiE,OAAO,MAAM,uDAAuD,0CAA0C,gCAAgC,sDAAsD,mCAAmC,OAAO,EAAE,4BAA4B,uDAAuD,qCAAqC,iHAAiH,sDAAsD,uCAAuC,OAAO,EAAE,yBAAyB,MAAM,iCAAiC,8BAA8B,qDAAqD,gCAAgC,SAAS,EAAE,4BAA4B,OAAO,gCAAgC,kDAAkD,6BAA6B,SAAS,EAAE,4CAA4C,4BAA4B,SAAS,EAAE,OAAO,gCAAgC,yOAAyO,6BAA6B,kDAAkD,iCAAiC,iBAAiB,SAAS,oNAAoN,sCAAsC,8CAA8C,qGAAqG,SAAS,EAAE,wCAAwC,+FAA+F,mDAAmD,WAAW,SAAS,oCAAoC,6FAA6F,mDAAmD,WAAW,SAAS,2BAA2B,+BAA+B,OAAO,2BAA2B,wCAAwC,aAAa,EAAE,EAAE,2DAA2D,8CAA8C,OAAO,gIAAgI,wCAAwC,6FAA6F,6EAA6E,sDAAsD,6BAA6B,+BAA+B,OAAO,yDAAyD,iDAAiD,iCAAiC,SAAS,iBAAiB,KAAK,sCAAsC,8DAA8D,+IAA+I,kCAAkC,0CAA0C,OAAO,0BAA0B,wCAAwC,2CAA2C,OAAO,EAAE,iBAAiB,KAAK,gCAAgC,4CAA4C,8CAA8C,mBAAmB,0BAA0B,2BAA2B,+HAA+H,mBAAmB,kHAAkH,yLAAyL,sCAAsC,gEAAgE,4BAA4B,+EAA+E,EAAE,mDAAmD,WAAW,gBAAgB,8CAA8C,WAAW,yCAAyC,SAAS,8EAA8E,2DAA2D,SAAS,OAAO,EAAE,iLAAiL,2IAA2I,yCAAyC,MAAM,uCAAuC,iDAAiD,6/BAA6/B,4BAA4B,+BAA+B,QAAQ,MAAM,uGAAuG,6CAA6C,yCAAyC,WAAW,soBAAsoB,MAAM,sBAAsB,2BAA2B,gGAAgG,UAAU,uHAAuH,UAAU,0HAA0H,UAAU,iIAAiI,UAAU,4IAA4I,mHAAmH,oDAAoD,2HAA2H,8PAA8P,+EAA+E,oDAAoD,SAAS,gBAAgB,sCAAsC,OAAO,iEAAiE,6CAA6C,uDAAuD,uFAAuF,mFAAmF,sBAAsB,kHAAkH,0BAA0B,4FAA4F,mCAAmC,iCAAiC,mCAAmC,SAAS,wEAAwE,uDAAuD,4BAA4B,mBAAmB,kBAAkB,MAAM,2DAA2D,kCAAkC,+CAA+C,uDAAuD,WAAW,2DAA2D,SAAS,gEAAgE,oDAAoD,4DAA4D,iIAAiI,yBAAyB,uJAAuJ,0BAA0B,aAAa,WAAW,wBAAwB,SAAS,yBAAyB,oGAAoG,gCAAgC,2FAA2F,aAAa,8BAA8B,oDAAoD,qBAAqB,oCAAoC,sBAAsB,+BAA+B,0FAA0F,uBAAuB,aAAa,8BAA8B,qCAAqC,aAAa,WAAW,yBAAyB,gDAAgD,oFAAoF,6CAA6C,0BAA0B,0CAA0C,wEAAwE,kDAAkD,sDAAsD,WAAW,YAAY,SAAS,0DAA0D,6FAA6F,qDAAqD,SAAS,4CAA4C,kBAAkB,wCAAwC,SAAS,MAAM,yCAAyC,6BAA6B,4BAA4B,4BAA4B,oGAAoG,2EAA2E,wBAAwB,wGAAwG,gFAAgF,wBAAwB,eAAe,aAAa,+BAA+B,WAAW,uBAAuB,mBAAmB,0BAA0B,MAAM,iCAAiC,kDAAkD,qCAAqC,+CAA+C,6DAA6D,aAAa,WAAW,SAAS,oBAAoB,OAAO,oDAAoD,sCAAsC,uFAAuF,+FAA+F,yBAAyB,kZAAkZ,iDAAiD,iDAAiD,kBAAkB,mDAAmD,gDAAgD,UAAU,MAAM,8DAA8D,0CAA0C,SAAS,6BAA6B,OAAO,2OAA2O,4HAA4H,gZAAgZ,+9CAA+9C,0CAA0C,2GAA2G,4BAA4B,kBAAkB,MAAM,kGAAkG,iDAAiD,mCAAmC,oCAAoC,2CAA2C,OAAO,MAAM,kMAAkM,4BAA4B,sDAAsD,2BAA2B,yGAAyG,OAAO,MAAM,iBAAiB,uEAAuE,KAAK,EAAE,KAAK,GAAG,G;;;;;;;ACAx5iE,0HAA0H,aAAa,mCAAmC,iqBAAiqB,GAAG,UAAU,G;;;;;;;ACAx1B,kZAAkZ,iBAAiB,4FAA4F,uBAAuB,iCAAiC,6CAA6C,+CAA+C,yDAAyD,mCAAmC,2CAA2C,iDAAiD,6CAA6C,2CAA2C,2CAA2C,2CAA2C,+CAA+C,6CAA6C,uCAAuC,mDAAmD,mEAAmE,iCAAiC,uCAAuC,+CAA+C,uGAAuG,gCAAgC,6TAA6T,4BAA4B,SAAS,QAAQ,qBAAqB,MAAM,8BAA8B,yDAAyD,wBAAwB,2JAA2J,mGAAmG,yEAAyE,EAAE,4BAA4B,gXAAgX,EAAE,SAAS,OAAO,8BAA8B,8BAA8B,+SAA+S,EAAE,WAAW,OAAO,8BAA8B,4XAA4X,EAAE,WAAW,SAAS,wCAAwC,4FAA4F,SAAS,OAAO,+BAA+B,SAAS,0DAA0D,sDAAsD,wBAAwB,8CAA8C,kBAAkB,EAAE,qJAAqJ,EAAE,WAAW,EAAE,SAAS,gDAAgD,OAAO,kCAAkC,oCAAoC,oCAAoC,OAAO,4BAA4B,uBAAuB,yBAAyB,yBAAyB,2BAA2B,gCAAgC,OAAO,oCAAoC,gCAAgC,gCAAgC,2BAA2B,WAAW,6BAA6B,wBAAwB,2CAA2C,WAAW,4BAA4B,2BAA2B,2CAA2C,WAAW,OAAO,wBAAwB,WAAW,SAAS,OAAO,+BAA+B,0CAA0C,WAAW,OAAO,wBAAwB,WAAW,SAAS,OAAO,0CAA0C,mBAAmB,qBAAqB,sCAAsC,SAAS,OAAO,iDAAiD,SAAS,2BAA2B,+BAA+B,oCAAoC,SAAS,OAAO,+BAA+B,SAAS,OAAO,sCAAsC,mDAAmD,2BAA2B,qCAAqC,oCAAoC,SAAS,OAAO,+BAA+B,SAAS,OAAO,sCAAsC,0BAA0B,gDAAgD,kDAAkD,gCAAgC,oBAAoB,aAAa,qCAAqC,WAAW,mNAAmN,8BAA8B,kBAAkB,WAAW,OAAO,qCAAqC,WAAW,6BAA6B,sCAAsC,gBAAgB,gEAAgE,gBAAgB,2DAA2D,mCAAmC,sCAAsC,gBAAgB,yDAAyD,yCAAyC,uDAAuD,iCAAiC,kBAAkB,2DAA2D,mCAAmC,kBAAkB,2DAA2D,mCAAmC,kBAAkB,4DAA4D,qCAAqC,kBAAkB,WAAW,wBAAwB,gBAAgB,4DAA4D,mCAAmC,sCAAsC,gBAAgB,2DAA2D,yCAAyC,uDAAuD,iCAAiC,kBAAkB,2DAA2D,mCAAmC,kBAAkB,2DAA2D,mCAAmC,kBAAkB,4DAA4D,qCAAqC,kBAAkB,WAAW,0BAA0B,gBAAgB,SAAS,OAAO,wCAAwC,yCAAyC,0CAA0C,sEAAsE,SAAS,+BAA+B,iCAAiC,uHAAuH,6DAA6D,4CAA4C,SAAS,OAAO,kCAAkC,mJAAmJ,gCAAgC,sGAAsG,0GAA0G,0GAA0G,8GAA8G,SAAS,OAAO,6EAA6E,iFAAiF,iFAAiF,qFAAqF,SAAS,wNAAwN,2MAA2M,iOAAiO,sjBAAsjB,udAAud,iOAAiO,yLAAyL,iCAAiC,iSAAiS,yUAAyU,gBAAgB,oIAAoI,gBAAgB,SAAS,0BAA0B,OAAO,8BAA8B,+BAA+B,oBAAoB,SAAS,sQAAsQ,OAAO,iCAAiC,oCAAoC,iBAAiB,SAAS,iCAAiC,uDAAuD,yLAAyL,SAAS,EAAE,gEAAgE,qCAAqC,SAAS,OAAO,2CAA2C,SAAS,iGAAiG,8BAA8B,+EAA+E,OAAO,oCAAoC,iDAAiD,uDAAuD,+BAA+B,SAAS,qDAAqD,iCAAiC,SAAS,qDAAqD,iCAAiC,mCAAmC,WAAW,OAAO,qCAAqC,WAAW,SAAS,sDAAsD,mCAAmC,SAAS,OAAO,wCAAwC,uCAAuC,qDAAqD,gBAAgB,uDAAuD,mCAAmC,WAAW,6BAA6B,qCAAqC,WAAW,OAAO,iCAAiC,WAAW,gBAAgB,wDAAwD,qCAAqC,WAAW,OAAO,iCAAiC,WAAW,gBAAgB,uDAAuD,gBAAgB,SAAS,OAAO,wCAAwC,uCAAuC,oDAAoD,qCAAqC,WAAW,6BAA6B,mCAAmC,WAAW,OAAO,mCAAmC,WAAW,gBAAgB,qDAAqD,gBAAgB,uDAAuD,gBAAgB,yDAAyD,mCAAmC,WAAW,OAAO,mCAAmC,WAAW,gBAAgB,SAAS,OAAO,oCAAoC,oEAAoE,wCAAwC,2CAA2C,iCAAiC,iCAAiC,8CAA8C,aAAa,OAAO,8CAA8C,aAAa,WAAW,KAAK,SAAS,OAAO,sCAAsC,oEAAoE,0CAA0C,2CAA2C,iCAAiC,iCAAiC,8CAA8C,aAAa,OAAO,8CAA8C,aAAa,WAAW,KAAK,SAAS,OAAO,sCAAsC,oEAAoE,0CAA0C,2CAA2C,iCAAiC,iCAAiC,8CAA8C,aAAa,OAAO,8CAA8C,aAAa,WAAW,KAAK,SAAS,OAAO,wCAAwC,oEAAoE,4CAA4C,2CAA2C,iCAAiC,mCAAmC,mCAAmC,iDAAiD,eAAe,OAAO,iDAAiD,eAAe,aAAa,KAAK,WAAW,OAAO,mCAAmC,mCAAmC,gDAAgD,eAAe,OAAO,gDAAgD,eAAe,aAAa,KAAK,WAAW,SAAS,OAAO,oCAAoC,gCAAgC,iCAAiC,wBAAwB,yCAAyC,WAAW,6BAA6B,0BAA0B,WAAW,SAAS,8CAA8C,wBAAwB,mBAAmB,SAAS,oBAAoB,OAAO,0CAA0C,mBAAmB,qBAAqB,sCAAsC,SAAS,OAAO,mFAAmF,SAAS,4BAA4B,+BAA+B,oCAAoC,SAAS,OAAO,+BAA+B,SAAS,OAAO,sCAAsC,qFAAqF,4BAA4B,qCAAqC,oCAAoC,SAAS,OAAO,+BAA+B,SAAS,OAAO,kCAAkC,qCAAqC,iBAAiB,SAAS,6BAA6B,4BAA4B,wGAAwG,wCAAwC,uDAAuD,SAAS,+CAA+C,iDAAiD,SAAS,yBAAyB,6BAA6B,4DAA4D,SAAS,yCAAyC,gDAAgD,mCAAmC,WAAW,OAAO,mCAAmC,WAAW,iCAAiC,gBAAgB,gDAAgD,mCAAmC,WAAW,OAAO,mCAAmC,WAAW,iCAAiC,gBAAgB,wDAAwD,mCAAmC,gBAAgB,0CAA0C,iCAAiC,WAAW,OAAO,iCAAiC,WAAW,+BAA+B,gBAAgB,SAAS,uBAAuB,OAAO,kTAAkT,mCAAmC,yBAAyB,SAAS,kDAAkD,0DAA0D,SAAS,OAAO,0CAA0C,SAAS,OAAO,wFAAwF,4BAA4B,iBAAiB,SAAS,mOAAmO,2EAA2E,0CAA0C,EAAE,mCAAmC,gGAAgG,0GAA0G,uGAAuG,iDAAiD,oIAAoI,8CAA8C,2EAA2E,+CAA+C,wCAAwC,WAAW,SAAS,MAAM,uLAAuL,gCAAgC,gDAAgD,WAAW,oDAAoD,6DAA6D,WAAW,SAAS,kMAAkM,iCAAiC,+DAA+D,2FAA2F,yEAAyE,4BAA4B,WAAW,OAAO,+BAA+B,WAAW,SAAS,8DAA8D,+BAA+B,wBAAwB,SAAS,MAAM,8EAA8E,SAAS,4BAA4B,4EAA4E,EAAE,OAAO,6BAA6B,yCAAyC,2BAA2B,gCAAgC,SAAS,+CAA+C,OAAO,gDAAgD,mCAAmC,0CAA0C,8LAA8L,kCAAkC,0FAA0F,mCAAmC,6BAA6B,4BAA4B,eAAe,aAAa,kCAAkC,0FAA0F,mCAAmC,2BAA2B,4BAA4B,eAAe,aAAa,sCAAsC,gCAAgC,2BAA2B,eAAe,wBAAwB,iCAAiC,qCAAqC,iBAAiB,gCAAgC,eAAe,OAAO,gCAAgC,eAAe,aAAa,gCAAgC,kCAAkC,kCAAkC,qCAAqC,4BAA4B,aAAa,kCAAkC,0BAA0B,4BAA4B,4BAA4B,iCAAiC,WAAW,OAAO,sCAAsC,WAAW,SAAS,OAAO,sCAAsC,SAAS,OAAO,gDAAgD,oBAAoB,uBAAuB,iBAAiB,SAAS,yHAAyH,yDAAyD,sEAAsE,sCAAsC,sCAAsC,mCAAmC,4BAA4B,2BAA2B,8BAA8B,+BAA+B,aAAa,+BAA+B,8BAA8B,aAAa,WAAW,SAAS,OAAO,+EAA+E,oEAAoE,uDAAuD,mBAAmB,WAAW,kEAAkE,iFAAiF,kFAAkF,yBAAyB,mBAAmB,WAAW,iEAAiE,+DAA+D,oEAAoE,oCAAoC,qCAAqC,WAAW,kCAAkC,oCAAoC,qCAAqC,WAAW,oCAAoC,sCAAsC,yCAAyC,WAAW,sCAAsC,wCAAwC,wCAAwC,8BAA8B,qBAAqB,WAAW,8BAA8B,uBAAuB,WAAW,8BAA8B,uBAAuB,WAAW,8JAA8J,wBAAwB,WAAW,8BAA8B,wBAAwB,WAAW,wCAAwC,yEAAyE,WAAW,oCAAoC,4BAA4B,qDAAqD,yBAAyB,aAAa,4BAA4B,2BAA2B,aAAa,6BAA6B,wBAAwB,0EAA0E,oDAAoD,WAAW,wCAAwC,uBAAuB,WAAW,OAAO,wCAAwC,uCAAuC,aAAa,yDAAyD,uBAAuB,aAAa,WAAW,SAAS,2BAA2B,8BAA8B,0EAA0E,0EAA0E,SAAS,OAAO,+BAA+B,+BAA+B,SAAS,iCAAiC,oCAAoC,OAAO,iCAAiC,0BAA0B,iBAAiB,SAAS,8CAA8C,iBAAiB,SAAS,sGAAsG,qEAAqE,YAAY,4BAA4B,iCAAiC,uDAAuD,yLAAyL,SAAS,EAAE,uBAAuB,gCAAgC,+BAA+B,SAAS,6EAA6E,iCAAiC,kDAAkD,WAAW,OAAO,kCAAkC,WAAW,SAAS,gEAAgE,kFAAkF,SAAS,OAAO,sCAAsC,0CAA0C,WAAW,SAAS,6BAA6B,OAAO,qCAAqC,6DAA6D,OAAO,yCAAyC,6BAA6B,4BAA4B,8BAA8B,SAAS,iCAAiC,6DAA6D,yLAAyL,SAAS,EAAE,OAAO,oCAAoC,mDAAmD,OAAO,2CAA2C,0CAA0C,OAAO,mCAAmC,qCAAqC,iBAAiB,SAAS,qNAAqN,gCAAgC,yEAAyE,6EAA6E,mCAAmC,+EAA+E,WAAW,kCAAkC,wFAAwF,WAAW,SAAS,OAAO,yEAAyE,6EAA6E,mCAAmC,+EAA+E,WAAW,kCAAkC,wFAAwF,WAAW,SAAS,OAAO,6CAA6C,qCAAqC,iBAAiB,SAAS,kYAAkY,gCAAgC,OAAO,mCAAmC,4BAA4B,2BAA2B,2FAA2F,uBAAuB,yBAAyB,SAAS,sBAAsB,mCAAmC,+CAA+C,SAAS,OAAO,qCAAqC,8GAA8G,4BAA4B,gDAAgD,kCAAkC,uCAAuC,aAAa,WAAW,oKAAoK,qCAAqC,WAAW,gBAAgB,sDAAsD,gBAAgB,yDAAyD,yBAAyB,uDAAuD,kBAAkB,2DAA2D,kBAAkB,2DAA2D,kBAAkB,4DAA4D,kBAAkB,WAAW,uCAAuC,+CAA+C,gBAAgB,2DAA2D,yBAAyB,uDAAuD,kBAAkB,2DAA2D,kBAAkB,2DAA2D,kBAAkB,4DAA4D,kBAAkB,WAAW,uCAAuC,+CAA+C,gBAAgB,SAAS,OAAO,mCAAmC,uLAAuL,wCAAwC,SAAS,OAAO,MAAM,4EAA4E,8CAA8C,mBAAmB,mCAAmC,+HAA+H,sBAAsB,2EAA2E,wDAAwD,SAAS,2CAA2C,yCAAyC,SAAS,OAAO,EAAE,MAAM,kCAAkC,8KAA8K,sBAAsB,gOAAgO,oGAAoG,mDAAmD,+CAA+C,yIAAyI,4BAA4B,uCAAuC,iBAAiB,SAAS,2BAA2B,uFAAuF,OAAO,MAAM,KAAK,4BAA4B,G;;;;;;;ACAn3lC,qRAAqR,qBAAqB,mFAAmF,0YAA0Y,6IAA6I,8BAA8B,4EAA4E,WAAW,8BAA8B,UAAU,KAAK,OAAO,wBAAwB,KAAK,gDAAgD,mFAAmF,2VAA2V,iBAAiB,yCAAyC,0BAA0B,6CAA6C,kCAAkC,GAAG,sBAAsB,yCAAyC,IAAI,0BAA0B,8BAA8B,wBAAwB,uCAAuC,2CAA2C,qCAAqC,yDAAyD,qBAAqB,iDAAiD,6nBAA6nB,MAAM,+CAA+C,+CAA+C,MAAM,qCAAqC,2CAA2C,6EAA6E,2CAA2C,4BAA4B,oEAAoE,2BAA2B,mBAAmB,gDAAgD,0qBAA0qB,sBAAsB,0CAA0C,WAAW,SAAS,OAAO,sEAAsE,KAAK,8BAA8B,wBAAwB,wBAAwB,KAAK,uMAAuM,GAAG,8UAA8U,wNAAwN,MAAM,oCAAoC,2LAA2L,gCAAgC,KAAK,8IAA8I,6EAA6E,kCAAkC,OAAO,kHAAkH,KAAK,8IAA8I,2GAA2G,yFAAyF,+DAA+D,KAAK,kGAAkG,2CAA2C,KAAK,kCAAkC,oEAAoE,8CAA8C,OAAO,KAAK,KAAK,0BAA0B,8DAA8D,KAAK,0BAA0B,0BAA0B,KAAK,yBAAyB,2BAA2B,KAAK,yBAAyB,sEAAsE,6BAA6B,OAAO,KAAK,KAAK,wBAAwB,sEAAsE,qBAAqB,OAAO,KAAK,KAAK,0BAA0B,iEAAiE,sEAAsE,KAAK,wBAAwB,mDAAmD,KAAK,4JAA4J,mDAAmD,wFAAwF,gEAAgE,+EAA+E,oBAAoB,8EAA8E,UAAU,KAAK,mJAAmJ,kBAAkB,KAAK,qFAAqF,oBAAoB,UAAU,KAAK,aAAa,YAAY,QAAQ,sGAAsG,oEAAoE,iCAAiC,mJAAmJ,qBAAqB,WAAW,wLAAwL,iCAAiC,iHAAiH,yBAAyB,aAAa,2DAA2D,yBAAyB,aAAa,OAAO,0BAA0B,aAAa,gCAAgC,wHAAwH,yDAAyD,iCAAiC,kCAAkC,WAAW,SAAS,OAAO,KAAK,qDAAqD,IAAI,oBAAoB,yOAAyO,6BAA6B,KAAK,0BAA0B,uCAAuC,sBAAsB,wKAAwK,qBAAqB,OAAO,gCAAgC,mGAAmG,oBAAoB,OAAO,yKAAyK,8FAA8F,KAAK,uCAAuC,eAAe,6BAA6B,qBAAqB,OAAO,kBAAkB,KAAK,mDAAmD,qGAAqG,sBAAsB,kCAAkC,QAAQ,KAAK,wCAAwC,wBAAwB,mCAAmC,4BAA4B,eAAe,YAAY,QAAQ,mEAAmE,kBAAkB,WAAW,SAAS,OAAO,OAAO,0BAA0B,mEAAmE,kBAAkB,WAAW,SAAS,OAAO,mBAAmB,KAAK,wFAAwF,iFAAiF,0BAA0B,sGAAsG,iFAAiF,SAAS,OAAO,kEAAkE,gCAAgC,OAAO,+CAA+C,8BAA8B,OAAO,oFAAoF,KAAK,qFAAqF,8BAA8B,4BAA4B,6CAA6C,0GAA0G,SAAS,OAAO,gCAAgC,SAAS,OAAO,mBAAmB,KAAK,0CAA0C,6DAA6D,KAAK,mCAAmC,yHAAyH,gMAAgM,KAAK,qJAAqJ,sEAAsE,eAAe,SAAS,QAAQ,mCAAmC,OAAO,yBAAyB,qBAAqB,KAAK,kDAAkD,4HAA4H,4GAA4G,YAAY,QAAQ,qDAAqD,mDAAmD,qCAAqC,SAAS,OAAO,uBAAuB,KAAK,mFAAmF,uDAAuD,qHAAqH,8BAA8B,eAAe,YAAY,QAAQ,iDAAiD,kCAAkC,8BAA8B,WAAW,SAAS,qDAAqD,OAAO,4BAA4B,iDAAiD,kCAAkC,8BAA8B,WAAW,SAAS,OAAO,6DAA6D,KAAK,sMAAsM,GAAG,2CAA2C,0DAA0D,GAAG,mKAAmK,qEAAqE,KAAK,GAAG,iCAAiC,uSAAuS,mDAAmD,mBAAmB,KAAK,4HAA4H,GAAG,uCAAuC,iFAAiF,KAAK,oBAAoB,0BAA0B,8BAA8B,yDAAyD,oIAAoI,2FAA2F,gCAAgC,oQAAoQ,IAAI,uLAAuL,4CAA4C,wBAAwB,wFAAwF,2BAA2B,OAAO,gMAAgM,KAAK,kGAAkG,GAAG,6CAA6C,4DAA4D,IAAI,4DAA4D,kBAAkB,6cAA6c,sBAAsB,4BAA4B,OAAO,eAAe,KAAK,qSAAqS,IAAI,4uBAA4uB,qzBAAqzB,83BAA83B,2WAA2W,IAAI,+GAA+G,sDAAsD,uBAAuB,4FAA4F,OAAO,yWAAyW,KAAK,2BAA2B,uLAAuL,oBAAoB,KAAK,kEAAkE,wEAAwE,OAAO,QAAQ,wCAAwC,MAAM,gKAAgK,SAAS,oCAAoC,KAAK,gBAAgB,EAAE,GAAG,oDAAoD,wGAAwG,gLAAgL,GAAG,cAAc,YAAY,sCAAsC,sDAAsD,OAAO,iCAAiC,+DAA+D,OAAO,MAAM,GAAG,uDAAuD,6NAA6N,8BAA8B,qLAAqL,uBAAuB,KAAK,oGAAoG,6BAA6B,oCAAoC,+BAA+B,gPAAgP,+DAA+D,oEAAoE,6DAA6D,uJAAuJ,6CAA6C,iCAAiC,iBAAiB,eAAe,OAAO,+BAA+B,eAAe,6CAA6C,OAAO,4QAA4Q,6CAA6C,+BAA+B,eAAe,aAAa,uCAAuC,yBAAyB,4EAA4E,2BAA2B,wCAAwC,mEAAmE,uEAAuE,2BAA2B,WAAW,SAAS,qKAAqK,mCAAmC,+BAA+B,unBAAunB,qKAAqK,2SAA2S,oIAAoI,uIAAuI,mDAAmD,eAAe,OAAO,kEAAkE,eAAe,aAAa,4FAA4F,8BAA8B,2BAA2B,kHAAkH,aAAa,+CAA+C,WAAW,iBAAiB,sGAAsG,2BAA2B,WAAW,qBAAqB,qDAAqD,WAAW,UAAU,oCAAoC,gDAAgD,aAAa,WAAW,SAAS,OAAO,KAAK,qGAAqG,GAAG,kEAAkE,yBAAyB,wNAAwN,kBAAkB,oCAAoC,oMAAoM,mFAAmF,OAAO,8CAA8C,KAAK,iBAAiB,GAAG,kFAAkF,SAAS,4DAA4D,yBAAyB,cAAc,GAAG,yDAAyD,SAAS,yFAAyF,oDAAoD,WAAW,wBAAwB,KAAK,cAAc,mBAAmB,KAAK,UAAU,wEAAwE,wCAAwC,OAAO,+CAA+C,KAAK,GAAG,6EAA6E,OAAO,gDAAgD,6BAA6B,+DAA+D,MAAM,GAAG,yEAAyE,OAAO,iDAAiD,6BAA6B,0GAA0G,MAAM,GAAG,oFAAoF,QAAQ,6BAA6B,qEAAqE,gIAAgI,8PAA8P,6iBAA6iB,wGAAwG,iDAAiD,2DAA2D,aAAa,OAAO,gDAAgD,aAAa,WAAW,2UAA2U,SAAS,4CAA4C,gQAAgQ,gCAAgC,0CAA0C,OAAO,mFAAmF,MAAM,GAAG,6EAA6E,SAAS,iDAAiD,+CAA+C,2BAA2B,sDAAsD,yGAAyG,iFAAiF,oDAAoD,sDAAsD,WAAW,SAAS,OAAO,GAAG,KAAK,GAAG,GAAG,gFAAgF,gBAAgB,uBAAuB,uBAAuB,8FAA8F,uFAAuF,GAAG,2FAA2F,eAAe,+EAA+E,OAAO,kEAAkE,+EAA+E,uMAAuM,0IAA0I,sBAAsB,KAAK,mDAAmD,+CAA+C,kDAAkD,gOAAgO,0RAA0R,iLAAiL,2GAA2G,KAAK,gQAAgQ,4DAA4D,wGAAwG,KAAK,GAAG,2KAA2K,uCAAuC,KAAK,GAAG,wIAAwI,qDAAqD,KAAK,GAAG,+kBAA+kB,WAAW,sDAAsD,qBAAqB,OAAO,cAAc,oBAAoB,OAAO,KAAK,GAAG,uDAAuD,uCAAuC,wDAAwD,iCAAiC,wDAAwD,UAAU,QAAQ,8CAA8C,kFAAkF,kDAAkD,sCAAsC,SAAS,QAAQ,KAAK,OAAO,wCAAwC,wDAAwD,iCAAiC,kHAAkH,+CAA+C,UAAU,QAAQ,yIAAyI,kFAAkF,6EAA6E,yBAAyB,2FAA2F,8CAA8C,8BAA8B,aAAa,mGAAmG,kBAAkB,+CAA+C,qDAAqD,gDAAgD,gCAAgC,eAAe,aAAa,WAAW,sBAAsB,SAAS,QAAQ,KAAK,0DAA0D,oEAAoE,mDAAmD,yDAAyD,OAAO,+CAA+C,OAAO,MAAM,oEAAoE,wFAAwF,2DAA2D,OAAO,MAAM,sKAAsK,mGAAmG,kBAAkB,yPAAyP,yLAAyL,qFAAqF,OAAO,8GAA8G,iCAAiC,OAAO,4NAA4N,uCAAuC,OAAO,wVAAwV,uCAAuC,OAAO,4KAA4K,iDAAiD,8DAA8D,scAAsc,gEAAgE,sDAAsD,OAAO,qVAAqV,2CAA2C,8BAA8B,2DAA2D,gIAAgI,OAAO,KAAK,GAAG,8BAA8B,weAAwe,KAAK,4EAA4E,8JAA8J,2DAA2D,4BAA4B,iBAAiB,OAAO,6JAA6J,sBAAsB,uBAAuB,OAAO,0NAA0N,8OAA8O,yIAAyI,uOAAuO,mLAAmL,oBAAoB,SAAS,0JAA0J,mLAAmL,mBAAmB,SAAS,qJAAqJ,OAAO,oCAAoC,MAAM,sBAAsB,GAAG,+CAA+C,8CAA8C,IAAI,mDAAmD,wBAAwB,+HAA+H,aAAa,6CAA6C,6RAA6R,qBAAqB,SAAS,OAAO,cAAc,6CAA6C,OAAO,KAAK,+DAA+D,IAAI,+CAA+C,gLAAgL,6HAA6H,6BAA6B,KAAK,4CAA4C,IAAI,0CAA0C,gLAAgL,uHAAuH,0BAA0B,KAAK,mQAAmQ,gCAAgC,iBAAiB,KAAK,uCAAuC,IAAI,kCAAkC,yEAAyE,IAAI,iEAAiE,UAAU,wDAAwD,2DAA2D,kTAAkT,gEAAgE,oCAAoC,2BAA2B,2CAA2C,sCAAsC,mCAAmC,SAAS,OAAO,qBAAqB,mDAAmD,OAAO,KAAK,8HAA8H,qBAAqB,IAAI,uCAAuC,sEAAsE,IAAI,0BAA0B,oIAAoI,eAAe,kBAAkB,cAAc,mCAAmC,eAAe,sBAAsB,eAAe,wCAAwC,eAAe,2BAA2B,KAAK,mBAAmB,+BAA+B,gEAAgE,0LAA0L,wCAAwC,kDAAkD,SAAS,qCAAqC,OAAO,mCAAmC,6YAA6Y,uDAAuD,oEAAoE,qCAAqC,WAAW,kSAAkS,kFAAkF,oDAAoD,yBAAyB,mCAAmC,SAAS,uBAAuB,OAAO,oCAAoC,kEAAkE,qDAAqD,sBAAsB,SAAS,qEAAqE,wDAAwD,qEAAqE,iTAAiT,8FAA8F,mDAAmD,SAAS,2HAA2H,OAAO,KAAK,gBAAgB,2CAA2C,8FAA8F,iEAAiE,wBAAwB,WAAW,8BAA8B,sDAAsD,YAAY,OAAO,uCAAuC,sDAAsD,yMAAyM,yPAAyP,WAAW,GAAG,OAAO,kDAAkD,iCAAiC,+CAA+C,mCAAmC,uCAAuC,WAAW,4BAA4B,wBAAwB,WAAW,2BAA2B,uCAAuC,oCAAoC,WAAW,sCAAsC,oCAAoC,WAAW,sCAAsC,0DAA0D,WAAW,sCAAsC,yDAAyD,WAAW,sCAAsC,oEAAoE,WAAW,sCAAsC,gHAAgH,WAAW,sCAAsC,6FAA6F,WAAW,yBAAyB,UAAU,OAAO,gEAAgE,8IAA8I,6GAA6G,qCAAqC,WAAW,+CAA+C,+SAA+S,6BAA6B,kFAAkF,+BAA+B,8BAA8B,oDAAoD,4HAA4H,qCAAqC,qBAAqB,mBAAmB,+JAA+J,iBAAiB,4BAA4B,eAAe,2EAA2E,kHAAkH,yIAAyI,GAAG,iDAAiD,iEAAiE,+CAA+C,mEAAmE,uMAAuM,+IAA+I,sEAAsE,0BAA0B,mBAAmB,iBAAiB,iBAAiB,OAAO,sGAAsG,wEAAwE,GAAG,mDAAmD,mEAAmE,mCAAmC,iBAAiB,sJAAsJ,wNAAwN,iKAAiK,6GAA6G,uGAAuG,GAAG,+DAA+D,uBAAuB,8CAA8C,8BAA8B,uBAAuB,qBAAqB,mBAAmB,iBAAiB,eAAe,mGAAmG,mFAAmF,aAAa,YAAY,OAAO,+CAA+C,waAAwa,oLAAoL,gCAAgC,SAAS,kFAAkF,oDAAoD,8HAA8H,wGAAwG,6BAA6B,yDAAyD,iEAAiE,eAAe,aAAa,kCAAkC,yCAAyC,cAAc,SAAS,oBAAoB,OAAO,KAAK,iBAAiB,qFAAqF,mPAAmP,uGAAuG,4GAA4G,iFAAiF,gDAAgD,qDAAqD,eAAe,aAAa,WAAW,+CAA+C,8BAA8B,iDAAiD,qIAAqI,kCAAkC,YAAY,OAAO,oDAAoD,iCAAiC,mDAAmD,UAAU,OAAO,qDAAqD,oDAAoD,iCAAiC,kFAAkF,UAAU,OAAO,yfAAyf,oGAAoG,sDAAsD,SAAS,kEAAkE,iCAAiC,uBAAuB,cAAc,6JAA6J,kDAAkD,iFAAiF,aAAa,WAAW,6DAA6D,uBAAuB,UAAU,OAAO,2DAA2D,2DAA2D,mDAAmD,OAAO,iCAAiC,wCAAwC,OAAO,kCAAkC,uIAAuI,OAAO,2JAA2J,0RAA0R,OAAO,qCAAqC,iNAAiN,mGAAmG,SAAS,wCAAwC,OAAO,mDAAmD,gIAAgI,UAAU,2DAA2D,2BAA2B,yHAAyH,MAAM,4BAA4B,oCAAoC,yBAAyB,WAAW,SAAS,oBAAoB,OAAO,mCAAmC,2CAA2C,OAAO,+DAA+D,6CAA6C,OAAO,kCAAkC,6CAA6C,OAAO,mCAAmC,gHAAgH,OAAO,iCAAiC,iBAAiB,gUAAgU,OAAO,mFAAmF,qBAAqB,OAAO,4EAA4E,8BAA8B,OAAO,oFAAoF,+DAA+D,OAAO,2EAA2E,kBAAkB,eAAe,YAAY,WAAW,iCAAiC,SAAS,4BAA4B,OAAO,0EAA0E,kBAAkB,eAAe,YAAY,WAAW,iCAAiC,SAAS,4BAA4B,OAAO,mFAAmF,cAAc,+BAA+B,gCAAgC,SAAS,gCAAgC,qBAAqB,SAAS,OAAO,uBAAuB,SAAS,iBAAiB,UAAU,IAAI,iCAAiC,SAAS,4BAA4B,OAAO,mFAAmF,4DAA4D,eAAe,cAAc,IAAI,iCAAiC,SAAS,4BAA4B,OAAO,OAAO,IAAI,uCAAuC,kDAAkD,uEAAuE,IAAI,+CAA+C,GAAG,cAAc,4BAA4B,IAAI,gDAAgD,GAAG,qEAAqE,qDAAqD,qCAAqC,8CAA8C,mHAAmH,qBAAqB,+CAA+C,KAAK,uBAAuB,gBAAgB,gCAAgC,uBAAuB,yFAAyF,sBAAsB,iHAAiH,SAAS,uCAAuC,OAAO,wBAAwB,iFAAiF,gCAAgC,sBAAsB,0IAA0I,GAAG,8CAA8C,OAAO,qDAAqD,2IAA2I,kCAAkC,wBAAwB,uFAAuF,GAAG,gDAAgD,SAAS,OAAO,yBAAyB,cAAc,OAAO,KAAK,mJAAmJ,0BAA0B,KAAK,6HAA6H,GAAG,mCAAmC,8DAA8D,WAAW,SAAS,QAAQ,oCAAoC,KAAK,oBAAoB,GAAG,yDAAyD,kKAAkK,gIAAgI,0CAA0C,0DAA0D,iDAAiD,WAAW,SAAS,qBAAqB,OAAO,gGAAgG,4EAA4E,wHAAwH,4CAA4C,4DAA4D,oDAAoD,4BAA4B,eAAe,aAAa,WAAW,SAAS,OAAO,4CAA4C,4DAA4D,oEAAoE,GAAG,uDAAuD,2CAA2C,eAAe,yHAAyH,+IAA+I,eAAe,OAAO,+HAA+H,8CAA8C,gHAAgH,8BAA8B,iBAAiB,eAAe,aAAa,WAAW,SAAS,qBAAqB,QAAQ,GAAG,yCAAyC,sEAAsE,gCAAgC,uBAAuB,uDAAuD,yBAAyB,WAAW,SAAS,oBAAoB,OAAO,sBAAsB,GAAG,8DAA8D,0CAA0C,WAAW,SAAS,QAAQ,+CAA+C,KAAK,mBAAmB,GAAG,+DAA+D,yGAAyG,aAAa,SAAS,QAAQ,wCAAwC,wDAAwD,oCAAoC,yBAAyB,0BAA0B,WAAW,SAAS,OAAO,KAAK,0BAA0B,GAAG,+FAA+F,iDAAiD,4CAA4C,KAAK,iDAAiD,0DAA0D,KAAK,kEAAkE,4gBAA4gB,wBAAwB,2UAA2U,wFAAwF,OAAO,OAAO,+BAA+B,OAAO,oDAAoD,+CAA+C,6CAA6C,+FAA+F,uBAAuB,uCAAuC,+EAA+E,WAAW,SAAS,OAAO,qBAAqB,wCAAwC,6BAA6B,wHAAwH,kCAAkC,2BAA2B,iDAAiD,iIAAiI,eAAe,aAAa,+DAA+D,WAAW,mHAAmH,yBAAyB,qIAAqI,2DAA2D,aAAa,WAAW,SAAS,wEAAwE,OAAO,iKAAiK,2BAA2B,uDAAuD,SAAS,OAAO,4CAA4C,SAAS,OAAO,KAAK,GAAG,GAAG,0CAA0C,iXAAiX,qCAAqC,OAAO,oFAAoF,uDAAuD,OAAO,8EAA8E,0JAA0J,4SAA4S,+HAA+H,mBAAmB,OAAO,GAAG,aAAa,SAAS,QAAQ,8DAA8D,4EAA4E,OAAO,OAAO,qFAAqF,+FAA+F,6FAA6F,iBAAiB,SAAS,QAAQ,sDAAsD,oBAAoB,aAAa,WAAW,qRAAqR,uDAAuD,iQAAiQ,SAAS,iCAAiC,OAAO,KAAK,wCAAwC,GAAG,uEAAuE,6JAA6J,kgBAAkgB,4BAA4B,gKAAgK,+IAA+I,SAAS,iKAAiK,qFAAqF,4CAA4C,QAAQ,oCAAoC,kBAAkB,sKAAsK,uIAAuI,kCAAkC,oCAAoC,aAAa,4DAA4D,gEAAgE,2CAA2C,sBAAsB,eAAe,aAAa,8BAA8B,sCAAsC,aAAa,WAAW,+EAA+E,kHAAkH,6BAA6B,aAAa,8FAA8F,qCAAqC,aAAa,WAAW,SAAS,8JAA8J,kiBAAkiB,gBAAgB,sDAAsD,2DAA2D,WAAW,yBAAyB,mHAAmH,6BAA6B,+DAA+D,wDAAwD,iBAAiB,eAAe,aAAa,4HAA4H,WAAW,iFAAiF,mNAAmN,2CAA2C,WAAW,SAAS,0FAA0F,kCAAkC,2CAA2C,SAAS,2BAA2B,QAAQ,2EAA2E,GAAG,iEAAiE,6GAA6G,sBAAsB,iHAAiH,qCAAqC,OAAO,uBAAuB,qBAAqB,iDAAiD,kCAAkC,qCAAqC,SAAS,OAAO,yCAAyC,SAAS,OAAO,gJAAgJ,0EAA0E,KAAK,kBAAkB,GAAG,iHAAiH,gBAAgB,6GAA6G,QAAQ,qBAAqB,MAAM,uBAAuB,MAAM,sGAAsG,mLAAmL,8BAA8B,0KAA0K,qHAAqH,qKAAqK,wIAAwI,yBAAyB,yBAAyB,yFAAyF,uBAAuB,uCAAuC,SAAS,mEAAmE,OAAO,4HAA4H,qBAAqB,4BAA4B,gGAAgG,gBAAgB,SAAS,6CAA6C,+RAA+R,4GAA4G,2DAA2D,8BAA8B,0CAA0C,6BAA6B,aAAa,oBAAoB,WAAW,SAAS,OAAO,KAAK,qWAAqW,mBAAmB,GAAG,0KAA0K,8DAA8D,0IAA0I,uIAAuI,GAAG,GAAG,uBAAuB,8DAA8D,oCAAoC,qMAAqM,uBAAuB,iCAAiC,wCAAwC,6BAA6B,+BAA+B,+BAA+B,gCAAgC,sCAAsC,8BAA8B,KAAK,8CAA8C,0DAA0D,+DAA+D,kCAAkC,uDAAuD,gBAAgB,SAAS,6BAA6B,OAAO,KAAK,mBAAmB,IAAI,0CAA0C,qBAAqB,aAAa,GAAG,sBAAsB,6CAA6C,0BAA0B,OAAO,KAAK,qBAAqB,IAAI,yDAAyD,0GAA0G,kHAAkH,oCAAoC,yDAAyD,yDAAyD,OAAO,GAAG,KAAK,sDAAsD,sDAAsD,8CAA8C,OAAO,GAAG,KAAK,qGAAqG,sDAAsD,gEAAgE,OAAO,GAAG,KAAK,qHAAqH,GAAG,kDAAkD,0BAA0B,kBAAkB,sCAAsC,KAAK,wDAAwD,uEAAuE,KAAK,8EAA8E,iCAAiC,KAAK,KAAK,IAAI,uBAAuB,gCAAgC,+DAA+D,+CAA+C,sEAAsE,sBAAsB,SAAS,QAAQ,uDAAuD,0BAA0B,aAAa,WAAW,SAAS,KAAK,OAAO,mCAAmC,oBAAoB,SAAS,QAAQ,gDAAgD,OAAO,wDAAwD,KAAK,mCAAmC,qEAAqE,KAAK,gCAAgC,oEAAoE,KAAK,+BAA+B,mXAAmX,KAAK,GAAG,GAAG,4cAA4c,sBAAsB,mFAAmF,oBAAoB,OAAO,4IAA4I,2EAA2E,+HAA+H,0IAA0I,WAAW,OAAO,8CAA8C,SAAS,wHAAwH,uEAAuE,yEAAyE,kVAAkV,4HAA4H,wCAAwC,gIAAgI,oDAAoD,wEAAwE,OAAO,uDAAuD,iBAAiB,eAAe,aAAa,0BAA0B,wCAAwC,OAAO,yDAAyD,2BAA2B,oGAAoG,8BAA8B,aAAa,wBAAwB,WAAW,6CAA6C,yCAAyC,sDAAsD,4GAA4G,OAAO,8DAA8D,SAAS,uCAAuC,gCAAgC,6BAA6B,wBAAwB,oBAAoB,yEAAyE,qCAAqC,kKAAkK,OAAO,kDAAkD,MAAM,uGAAuG,qEAAqE,qKAAqK,iFAAiF,uBAAuB,6BAA6B,sEAAsE,wCAAwC,kBAAkB,eAAe,OAAO,QAAQ,wDAAwD,wBAAwB,WAAW,SAAS,OAAO,GAAG,KAAK,gDAAgD,kJAAkJ,gIAAgI,eAAe,OAAO,QAAQ,gCAAgC,wBAAwB,yBAAyB,wSAAwS,oCAAoC,oBAAoB,aAAa,WAAW,SAAS,OAAO,6FAA6F,KAAK,0FAA0F,kEAAkE,0FAA0F,OAAO,qEAAqE,yDAAyD,OAAO,yMAAyM,KAAK,2CAA2C,wIAAwI,KAAK,sCAAsC,6GAA6G,KAAK,GAAG,GAAG,kCAAkC,2DAA2D,eAAe,GAAG,kBAAkB,8BAA8B,mCAAmC,8DAA8D,KAAK,gCAAgC,yCAAyC,KAAK,gDAAgD,gDAAgD,KAAK,6BAA6B,8CAA8C,KAAK,6BAA6B,kDAAkD,KAAK,gCAAgC,0CAA0C,KAAK,gCAAgC,8CAA8C,KAAK,6CAA6C,iDAAiD,KAAK,6CAA6C,qDAAqD,KAAK,iCAAiC,8CAA8C,sBAAsB,KAAK,iCAAiC,yCAAyC,KAAK,iCAAiC,0OAA0O,sCAAsC,OAAO,sNAAsN,oCAAoC,OAAO,mDAAmD,KAAK,GAAG,wBAAwB,qDAAqD,kDAAkD,+CAA+C,yBAAyB,OAAO,2DAA2D,qDAAqD,OAAO,gCAAgC,wEAAwE,uCAAuC,SAAS,sGAAsG,4BAA4B,SAAS,OAAO,yCAAyC,MAAM,GAAG,GAAG,mDAAmD,2GAA2G,oBAAoB,4EAA4E,4BAA4B,KAAK,GAAG,kBAAkB,GAAG,+2BAA+2B,gNAAgN,YAAY,8fAA8f,0EAA0E,uJAAuJ,eAAe,cAAc,qBAAqB,iCAAiC,iDAAiD,qLAAqL,kHAAkH,6BAA6B,aAAa,WAAW,SAAS,kFAAkF,yBAAyB,SAAS,yBAAyB,0EAA0E,+FAA+F,sBAAsB,yDAAyD,OAAO,wBAAwB,WAAW,SAAS,OAAO,iDAAiD,6FAA6F,uBAAuB,qHAAqH,4CAA4C,mCAAmC,aAAa,sCAAsC,qDAAqD,0CAA0C,8DAA8D,qCAAqC,mBAAmB,iBAAiB,gEAAgE,uEAAuE,iBAAiB,eAAe,GAAG,aAAa,gBAAgB,wCAAwC,qBAAqB,aAAa,WAAW,sBAAsB,SAAS,yEAAyE,sDAAsD,sBAAsB,2EAA2E,sCAAsC,mFAAmF,8BAA8B,eAAe,aAAa,WAAW,GAAG,sBAAsB,SAAS,0KAA0K,8FAA8F,SAAS,2EAA2E,uBAAuB,sBAAsB,WAAW,sBAAsB,SAAS,yJAAyJ,8BAA8B,+BAA+B,sBAAsB,SAAS,+BAA+B,uBAAuB,SAAS,8KAA8K,8BAA8B,qCAAqC,iCAAiC,WAAW,sBAAsB,SAAS,6BAA6B,0BAA0B,SAAS,kHAAkH,0BAA0B,8BAA8B,iEAAiE,+BAA+B,4BAA4B,qBAAqB,aAAa,WAAW,sBAAsB,SAAS,uFAAuF,2CAA2C,sBAAsB,SAAS,wGAAwG,yBAAyB,SAAS,QAAQ,kBAAkB,IAAI,8BAA8B,aAAa,GAAG,0BAA0B,aAAa,GAAG,4DAA4D,eAAe,WAAW,2IAA2I,4DAA4D,iCAAiC,6DAA6D,8CAA8C,qCAAqC,OAAO,iRAAiR,OAAO,sNAAsN,kBAAkB,oKAAoK,KAAK,GAAG,oBAAoB,kCAAkC,ikBAAikB,6BAA6B,yBAAyB,WAAW,+BAA+B,yDAAyD,wBAAwB,WAAW,sCAAsC,4CAA4C,WAAW,uGAAuG,gCAAgC,4DAA4D,0DAA0D,wKAAwK,mDAAmD,sCAAsC,8CAA8C,uCAAuC,8CAA8C,sCAAsC,qDAAqD,mEAAmE,qEAAqE,sLAAsL,mBAAmB,OAAO,0JAA0J,mBAAmB,iBAAiB,GAAG,eAAe,GAAG,yBAAyB,aAAa,aAAa,WAAW,kEAAkE,6BAA6B,mEAAmE,iCAAiC,8GAA8G,uCAAuC,8NAA8N,6BAA6B,qBAAqB,6DAA6D,iLAAiL,0EAA0E,qBAAqB,ymBAAymB,kGAAkG,qHAAqH,mPAAmP,qGAAqG,OAAO,wGAAwG,uWAAuW,uBAAuB,8EAA8E,OAAO,sLAAsL,yCAAyC,4CAA4C,uBAAuB,0KAA0K,qBAAqB,mBAAmB,yLAAyL,2BAA2B,qCAAqC,uBAAuB,cAAc,gEAAgE,uGAAuG,yBAAyB,qPAAqP,iMAAiM,6CAA6C,yCAAyC,2BAA2B,8DAA8D,yBAAyB,uBAAuB,sBAAsB,mQAAmQ,4BAA4B,iBAAiB,OAAO,qNAAqN,mEAAmE,yOAAyO,4FAA4F,2CAA2C,mEAAmE,mBAAmB,+CAA+C,iBAAiB,gBAAgB,aAAa,4DAA4D,wUAAwU,qSAAqS,iSAAiS,aAAa,aAAa,WAAW,6JAA6J,yEAAyE,WAAW,SAAS,uBAAuB,qFAAqF,iEAAiE,qJAAqJ,qDAAqD,2CAA2C,gIAAgI,aAAa,yZAAyZ,SAAS,0IAA0I,2CAA2C,2BAA2B,0CAA0C,4BAA4B,yCAAyC,2BAA2B,6CAA6C,+FAA+F,sBAAsB,UAAU,uMAAuM,OAAO,GAAG,wEAAwE,oDAAoD,wCAAwC,OAAO,0CAA0C,KAAK,4DAA4D,6aAA6a,oCAAoC,wCAAwC,wFAAwF,qCAAqC,oEAAoE,aAAa,YAAY,UAAU,oGAAoG,gHAAgH,4LAA4L,kCAAkC,SAAS,OAAO,iGAAiG,0EAA0E,OAAO,iCAAiC,KAAK,GAAG,GAAG,sNAAsN,uPAAuP,uMAAuM,6GAA6G,KAAK,IAAI,qDAAqD,mCAAmC,kBAAkB,KAAK,GAAG,IAAI,+EAA+E,sCAAsC,+NAA+N,uCAAuC,OAAO,GAAG,kBAAkB,IAAI,oBAAoB,+QAA+Q,oIAAoI,eAAe,OAAO,qEAAqE,kIAAkI,eAAe,OAAO,uGAAuG,KAAK,GAAG,GAAG,uCAAuC,8EAA8E,oEAAoE,sDAAsD,mBAAmB,GAAG,iUAAiU,uHAAuH,KAAK,OAAO,sGAAsG,8GAA8G,GAAG,mNAAmN,gEAAgE,kEAAkE,uBAAuB,wBAAwB,8DAA8D,OAAO,4BAA4B,kCAAkC,uBAAuB,qCAAqC,mBAAmB,OAAO,qBAAqB,2EAA2E,kCAAkC,oBAAoB,8DAA8D,OAAO,oBAAoB,8CAA8C,sDAAsD,YAAY,SAAS,OAAO,mBAAmB,eAAe,SAAS,QAAQ,gJAAgJ,SAAS,OAAO,KAAK,wBAAwB,mBAAmB,KAAK,8BAA8B,8BAA8B,KAAK,oDAAoD,IAAI,oGAAoG,wFAAwF,gCAAgC,GAAG,mCAAmC,qKAAqK,kFAAkF,GAAG,sCAAsC,8MAA8M,IAAI,2BAA2B,+CAA+C,GAAG,iBAAiB,sBAAsB,gCAAgC,gGAAgG,kDAAkD,mBAAmB,kMAAkM,2IAA2I,0CAA0C,qLAAqL,OAAO,yDAAyD,wEAAwE,GAAG,WAAW,SAAS,OAAO,qBAAqB,KAAK,0CAA0C,mDAAmD,iIAAiI,2CAA2C,6BAA6B,aAAa,cAAc,OAAO,6FAA6F,oDAAoD,SAAS,OAAO,mBAAmB,KAAK,kCAAkC,uLAAuL,KAAK,4CAA4C,odAAod,wCAAwC,OAAO,2PAA2P,qLAAqL,KAAK,qCAAqC,kDAAkD,oCAAoC,eAAe,OAAO,kCAAkC,iGAAiG,2IAA2I,SAAS,OAAO,iCAAiC,6NAA6N,SAAS,yBAAyB,yBAAyB,mCAAmC,SAAS,OAAO,sHAAsH,yRAAyR,4CAA4C,SAAS,OAAO,uCAAuC,SAAS,OAAO,KAAK,iCAAiC,wCAAwC,mEAAmE,KAAK,IAAI,4BAA4B,8BAA8B,wjBAAwjB,YAAY,8CAA8C,8BAA8B,8BAA8B,kBAAkB,KAAK,iCAAiC,mBAAmB,KAAK,gCAAgC,kBAAkB,KAAK,mGAAmG,mBAAmB,KAAK,kCAAkC,gCAAgC,KAAK,kBAAkB,GAAG,0CAA0C,aAAa,2JAA2J,0EAA0E,uCAAuC,2CAA2C,aAAa,iCAAiC,SAAS,eAAe,wGAAwG,OAAO,OAAO,yBAAyB,OAAO,KAAK,gBAAgB,GAAG,oBAAoB,+BAA+B,kEAAkE,KAAK,2CAA2C,iDAAiD,KAAK,2CAA2C,oCAAoC,KAAK,6LAA6L,iDAAiD,KAAK,4CAA4C,oCAAoC,KAAK,GAAG,GAAG,uBAAuB,kCAAkC,yFAAyF,0DAA0D,4BAA4B,sCAAsC,mFAAmF,6BAA6B,2BAA2B,mIAAmI,uCAAuC,wDAAwD,sDAAsD,uDAAuD,iBAAiB,eAAe,aAAa,yDAAyD,WAAW,SAAS,sBAAsB,OAAO,uEAAuE,sCAAsC,oCAAoC,SAAS,GAAG,OAAO,gDAAgD,iBAAiB,2YAA2Y,kJAAkJ,qCAAqC,wBAAwB,WAAW,+HAA+H,qCAAqC,wBAAwB,WAAW,iFAAiF,SAAS,2DAA2D,4FAA4F,SAAS,GAAG,OAAO,kDAAkD,KAAK,oCAAoC,oCAAoC,qCAAqC,OAAO,GAAG,KAAK,GAAG,GAAG,sBAAsB,yCAAyC,gBAAgB,qBAAqB,8CAA8C,2CAA2C,kGAAkG,kDAAkD,4EAA4E,WAAW,OAAO,+BAA+B,WAAW,SAAS,2BAA2B,OAAO,KAAK,wCAAwC,4BAA4B,yLAAyL,uCAAuC,UAAU,+GAA+G,2BAA2B,sBAAsB,OAAO,mBAAmB,wIAAwI,0CAA0C,SAAS,4EAA4E,qCAAqC,OAAO,sCAAsC,2BAA2B,OAAO,KAAK,uHAAuH,sCAAsC,uEAAuE,oEAAoE,6DAA6D,SAAS,SAAS,GAAG,KAAK,GAAG,GAAG,uBAAuB,mCAAmC,qBAAqB,2CAA2C,oBAAoB,sBAAsB,iBAAiB,OAAO,0CAA0C,+CAA+C,OAAO,gFAAgF,uDAAuD,uFAAuF,qEAAqE,yCAAyC,WAAW,SAAS,GAAG,KAAK,gCAAgC,oCAAoC,qCAAqC,OAAO,GAAG,KAAK,mCAAmC,8CAA8C,KAAK,gJAAgJ,gJAAgJ,+BAA+B,wDAAwD,WAAW,UAAU,2CAA2C,mBAAmB,yBAAyB,OAAO,4BAA4B,uBAAuB,mEAAmE,iCAAiC,kBAAkB,mCAAmC,SAAS,OAAO,gBAAgB,kCAAkC,KAAK,GAAG,GAAG,kEAAkE,mFAAmF,mEAAmE,mDAAmD,6CAA6C,2DAA2D,OAAO,mBAAmB,kBAAkB,8VAA8V,qCAAqC,2HAA2H,QAAQ,KAAK,iDAAiD,0EAA0E,8EAA8E,sZAAsZ,MAAM,6DAA6D,iGAAiG,6BAA6B,SAAS,sBAAsB,gDAAgD,SAAS,uWAAuW,2DAA2D,6JAA6J,qFAAqF,oGAAoG,mCAAmC,uOAAuO,yFAAyF,4BAA4B,SAAS,8CAA8C,SAAS,0CAA0C,uDAAuD,gGAAgG,KAAK,yBAAyB,sDAAsD,mLAAmL,oBAAoB,0BAA0B,oCAAoC,6BAA6B,OAAO,KAAK,oBAAoB,GAAG,iCAAiC,wCAAwC,yHAAyH,sBAAsB,qBAAqB,KAAK,mEAAmE,8CAA8C,0CAA0C,mCAAmC,0BAA0B,KAAK,4CAA4C,qBAAqB,GAAG,yCAAyC,uFAAuF,gFAAgF,gBAAgB,YAAY,+BAA+B,0BAA0B,iBAAiB,OAAO,qCAAqC,mBAAmB,0QAA0Q,sEAAsE,mCAAmC,sCAAsC,WAAW,SAAS,0EAA0E,sDAAsD,SAAS,OAAO,OAAO,qCAAqC,qCAAqC,mGAAmG,SAAS,OAAO,KAAK,sGAAsG,gBAAgB,YAAY,sCAAsC,0DAA0D,OAAO,KAAK,sBAAsB,GAAG,uBAAuB,sBAAsB,oCAAoC,KAAK,uBAAuB,8BAA8B,KAAK,gCAAgC,2CAA2C,iDAAiD,OAAO,sCAAsC,2CAA2C,gCAAgC,SAAS,OAAO,gCAAgC,SAAS,OAAO,GAAG,KAAK,GAAG,GAAG,mDAAmD,+DAA+D,gEAAgE,sBAAsB,6KAA6K,uPAAuP,mDAAmD,0CAA0C,+BAA+B,6LAA6L,qJAAqJ,4EAA4E,kLAAkL,qCAAqC,GAAG,KAAK,mFAAmF,gcAAgc,uFAAuF,0BAA0B,qDAAqD,+FAA+F,GAAG,uCAAuC,qIAAqI,oEAAoE,yDAAyD,OAAO,gEAAgE,qDAAqD,OAAO,OAAO,eAAe,KAAK,mEAAmE,8CAA8C,KAAK,iBAAiB,GAAG,sGAAsG,qCAAqC,aAAa,OAAO,QAAQ,6IAA6I,KAAK,GAAG,6BAA6B,EAAE,2EAA2E,gJAAgJ,aAAa,OAAO,QAAQ,wBAAwB,mCAAmC,6EAA6E,2LAA2L,uDAAuD,kCAAkC,uDAAuD,iDAAiD,OAAO,gFAAgF,mIAAmI,oDAAoD,+EAA+E,oFAAoF,yBAAyB,gCAAgC,WAAW,0KAA0K,mFAAmF,kGAAkG,SAAS,OAAO,KAAK,qEAAqE,YAAY,uCAAuC,wIAAwI,wBAAwB,+BAA+B,SAAS,iBAAiB,OAAO,sCAAsC,4FAA4F,oEAAoE,6BAA6B,OAAO,oDAAoD,cAAc,yCAAyC,wDAAwD,iCAAiC,WAAW,SAAS,OAAO,KAAK,sBAAsB,GAAG,kDAAkD,2BAA2B,gBAAgB,GAAG,4BAA4B,iBAAiB,GAAG,yDAAyD,qBAAqB,qFAAqF,wFAAwF,mEAAmE,6BAA6B,OAAO,6BAA6B,6DAA6D,OAAO,kBAAkB,KAAK,yCAAyC,4CAA4C,kCAAkC,KAAK,yBAAyB,6CAA6C,sDAAsD,yBAAyB,OAAO,OAAO,kDAAkD,wBAAwB,6BAA6B,OAAO,KAAK,yBAAyB,uBAAuB,KAAK,kBAAkB,kBAAkB,KAAK,wBAAwB,kBAAkB,8BAA8B,8FAA8F,+CAA+C,QAAQ,yHAAyH,KAAK,kCAAkC,0DAA0D,KAAK,GAAG,GAAG,8KAA8K,gBAAgB,8DAA8D,qKAAqK,2FAA2F,eAAe,OAAO,2GAA2G,8BAA8B,sCAAsC,wCAAwC,OAAO,4LAA4L,iEAAiE,OAAO,+GAA+G,qCAAqC,OAAO,gIAAgI,yDAAyD,OAAO,iDAAiD,uDAAuD,mSAAmS,UAAU,OAAO,yHAAyH,uBAAuB,qBAAqB,sDAAsD,mCAAmC,gEAAgE,+FAA+F,mBAAmB,SAAS,gJAAgJ,sKAAsK,0GAA0G,0FAA0F,sSAAsS,gBAAgB,2GAA2G,yCAAyC,qCAAqC,uMAAuM,4CAA4C,yDAAyD,aAAa,WAAW,SAAS,8BAA8B,8CAA8C,4CAA4C,kDAAkD,WAAW,SAAS,2FAA2F,oEAAoE,SAAS,OAAO,qCAAqC,SAAS,8HAA8H,OAAO,OAAO,+HAA+H,qLAAqL,2DAA2D,eAAe,OAAO,iDAAiD,uFAAuF,uBAAuB,qBAAqB,sDAAsD,mCAAmC,gEAAgE,qGAAqG,kCAAkC,oFAAoF,WAAW,mBAAmB,SAAS,uDAAuD,8EAA8E,wCAAwC,0HAA0H,2EAA2E,uBAAuB,oCAAoC,wTAAwT,oCAAoC,yCAAyC,uCAAuC,aAAa,mCAAmC,qDAAqD,aAAa,WAAW,SAAS,sOAAsO,uHAAuH,gEAAgE,WAAW,kCAAkC,SAAS,OAAO,0GAA0G,mDAAmD,OAAO,KAAK,0CAA0C,6YAA6Y,uGAAuG,oBAAoB,sBAAsB,QAAQ,mCAAmC,OAAO,oCAAoC,2KAA2K,eAAe,OAAO,sGAAsG,+BAA+B,yDAAyD,oFAAoF,2CAA2C,gBAAgB,8GAA8G,sSAAsS,0CAA0C,wCAAwC,wEAAwE,0EAA0E,wCAAwC,uDAAuD,uCAAuC,wCAAwC,eAAe,aAAa,WAAW,SAAS,OAAO,4FAA4F,iDAAiD,OAAO,4BAA4B,KAAK,8CAA8C,mKAAmK,0iBAA0iB,iBAAiB,cAAc,iCAAiC,wPAAwP,iCAAiC,kCAAkC,wBAAwB,mBAAmB,QAAQ,wCAAwC,8HAA8H,8DAA8D,4LAA4L,eAAe,8CAA8C,kDAAkD,eAAe,aAAa,2CAA2C,kCAAkC,uCAAuC,GAAG,aAAa,WAAW,SAAS,OAAO,uEAAuE,8CAA8C,4BAA4B,uDAAuD,GAAG,OAAO,4BAA4B,KAAK,wCAAwC,4DAA4D,6GAA6G,uCAAuC,gDAAgD,aAAa,WAAW,wBAAwB,uCAAuC,gDAAgD,aAAa,WAAW,mCAAmC,8CAA8C,0HAA0H,GAAG,SAAS,OAAO,GAAG,KAAK,uCAAuC,+GAA+G,KAAK,iBAAiB,aAAa,0GAA0G,eAAe,+GAA+G,6NAA6N,2IAA2I,qGAAqG,WAAW,2FAA2F,SAAS,oCAAoC,6NAA6N,yJAAyJ,8CAA8C,WAAW,4FAA4F,SAAS,sMAAsM,oCAAoC,wMAAwM,SAAS,OAAO,wBAAwB,yCAAyC,8KAA8K,2DAA2D,WAAW,SAAS,OAAO,KAAK,IAAI,kVAAkV,yHAAyH,qDAAqD,iDAAiD,OAAO,aAAa,KAAK,4HAA4H,iCAAiC,yDAAyD,gEAAgE,0DAA0D,sGAAsG,sRAAsR,8CAA8C,2FAA2F,gDAAgD,8CAA8C,uCAAuC,kGAAkG,qCAAqC,8BAA8B,aAAa,ieAAie,+CAA+C,mBAAmB,oCAAoC,WAAW,+JAA+J,oBAAoB,mLAAmL,qpBAAqpB,2DAA2D,SAAS,OAAO,KAAK,GAAG,GAAG,yDAAyD,qFAAqF,+CAA+C,KAAK,IAAI,2CAA2C,oGAAoG,4CAA4C,KAAK,iDAAiD,+BAA+B,2BAA2B,sHAAsH,wPAAwP,2PAA2P,+CAA+C,6CAA6C,wBAAwB,OAAO,sBAAsB,KAAK,mFAAmF,mCAAmC,KAAK,sHAAsH,2DAA2D,IAAI,8MAA8M,gNAAgN,iCAAiC,6CAA6C,uCAAuC,2BAA2B,OAAO,KAAK,kCAAkC,iCAAiC,+CAA+C,uCAAuC,4BAA4B,OAAO,KAAK,2CAA2C,iCAAiC,wDAAwD,uCAAuC,qCAAqC,OAAO,+BAA+B,KAAK,IAAI,uGAAuG,2jBAA2jB,yBAAyB,kBAAkB,yCAAyC,kCAAkC,kDAAkD,oCAAoC,+fAA+f,6EAA6E,iCAAiC,yEAAyE,8GAA8G,oIAAoI,2MAA2M,SAAS,OAAO,OAAO,+OAA+O,OAAO,KAAK,sCAAsC,sGAAsG,uBAAuB,4KAA4K,wCAAwC,0VAA0V,4BAA4B,sEAAsE,WAAW,oEAAoE,SAAS,OAAO,2FAA2F,SAAS,OAAO,4BAA4B,4EAA4E,wFAAwF,OAAO,+BAA+B,qBAAqB,wCAAwC,4DAA4D,4BAA4B,yEAAyE,kDAAkD,WAAW,OAAO,yDAAyD,WAAW,SAAS,OAAO,kGAAkG,SAAS,OAAO,6IAA6I,kDAAkD,OAAO,yCAAyC,irBAAirB,yBAAyB,oTAAoT,oTAAoT,wCAAwC,sEAAsE,WAAW,OAAO,mEAAmE,WAAW,SAAS,wEAAwE,OAAO,6BAA6B,0LAA0L,4BAA4B,wCAAwC,yEAAyE,WAAW,OAAO,sEAAsE,WAAW,sDAAsD,SAAS,OAAO,6DAA6D,SAAS,OAAO,MAAM,GAAG,GAAG,4QAA4Q,wKAAwK,gIAAgI,yBAAyB,oCAAoC,+EAA+E,sHAAsH,0PAA0P,0CAA0C,2DAA2D,2BAA2B,SAAS,mBAAmB,OAAO,MAAM,GAAG,GAAG,uBAAuB,iDAAiD,mDAAmD,KAAK,iDAAiD,sDAAsD,KAAK,2CAA2C,0BAA0B,+DAA+D,mFAAmF,yOAAyO,oBAAoB,OAAO,0CAA0C,yEAAyE,oDAAoD,SAAS,oBAAoB,OAAO,qEAAqE,mDAAmD,6BAA6B,OAAO,2BAA2B,yBAAyB,OAAO,oCAAoC,yDAAyD,OAAO,GAAG,KAAK,GAAG,GAAG,gYAAgY,mHAAmH,2HAA2H,iEAAiE,KAAK,kBAAkB,GAAG,wHAAwH,+EAA+E,gBAAgB,GAAG,kCAAkC,8DAA8D,uCAAuC,KAAK,OAAO,uCAAuC,KAAK,kBAAkB,GAAG,0CAA0C,yDAAyD,kCAAkC,aAAa,KAAK,yFAAyF,qCAAqC,+BAA+B,uBAAuB,mDAAmD,kCAAkC,iDAAiD,OAAO,QAAQ,gEAAgE,WAAW,SAAS,OAAO,KAAK,8DAA8D,wCAAwC,kCAAkC,aAAa,uCAAuC,KAAK,GAAG,uEAAuE,+CAA+C,uJAAuJ,iCAAiC,oGAAoG,kEAAkE,2CAA2C,KAAK,GAAG,8DAA8D,0DAA0D,6LAA6L,8MAA8M,iDAAiD,0CAA0C,gCAAgC,6DAA6D,SAAS,kDAAkD,OAAO,GAAG,KAAK,gBAAgB,kGAAkG,kCAAkC,iDAAiD,yBAAyB,OAAO,8HAA8H,8EAA8E,oCAAoC,mMAAmM,OAAO,QAAQ,0BAA0B,mCAAmC,oDAAoD,uGAAuG,oMAAoM,aAAa,WAAW,sDAAsD,SAAS,6BAA6B,4DAA4D,8EAA8E,4FAA4F,gBAAgB,QAAQ,gCAAgC,gKAAgK,wFAAwF,6IAA6I,8CAA8C,0FAA0F,QAAQ,iBAAiB,eAAe,OAAO,2eAA2e,eAAe,aAAa,WAAW,SAAS,OAAO,KAAK,wBAAwB,GAAG,iDAAiD,yFAAyF,aAAa,+BAA+B,QAAQ,+CAA+C,2CAA2C,OAAO,gCAAgC,+CAA+C,sDAAsD,SAAS,4CAA4C,OAAO,KAAK,kBAAkB,GAAG,oBAAoB,qCAAqC,kBAAkB,KAAK,kEAAkE,qHAAqH,8JAA8J,uJAAuJ,qCAAqC,8CAA8C,OAAO,QAAQ,0DAA0D,SAAS,OAAO,qFAAqF,kCAAkC,sDAAsD,yDAAyD,gDAAgD,OAAO,QAAQ,kEAAkE,WAAW,SAAS,OAAO,wCAAwC,SAAS,OAAO,8FAA8F,sCAAsC,6EAA6E,OAAO,mDAAmD,KAAK,qCAAqC,gFAAgF,eAAe,qCAAqC,QAAQ,mCAAmC,sDAAsD,gCAAgC,2CAA2C,wCAAwC,oDAAoD,gGAAgG,OAAO,gEAAgE,iBAAiB,eAAe,aAAa,oKAAoK,WAAW,2CAA2C,oKAAoK,WAAW,SAAS,OAAO,KAAK,GAAG,GAAG,uBAAuB,kCAAkC,4CAA4C,KAAK,qCAAqC,sCAAsC,KAAK,gCAAgC,8CAA8C,4GAA4G,uFAAuF,uCAAuC,aAAa,WAAW,GAAG,OAAO,kCAAkC,KAAK,2BAA2B,0DAA0D,mFAAmF,wDAAwD,qCAAqC,SAAS,OAAO,GAAG,KAAK,4BAA4B,0DAA0D,mFAAmF,wDAAwD,yDAAyD,SAAS,OAAO,GAAG,KAAK,2BAA2B,0DAA0D,gCAAgC,qDAAqD,SAAS,OAAO,GAAG,KAAK,0BAA0B,0DAA0D,gCAAgC,iEAAiE,SAAS,OAAO,GAAG,KAAK,0BAA0B,6BAA6B,eAAe,8BAA8B,QAAQ,oCAAoC,uFAAuF,2EAA2E,SAAS,OAAO,oBAAoB,KAAK,4DAA4D,oEAAoE,wFAAwF,qCAAqC,sEAAsE,OAAO,GAAG,KAAK,gCAAgC,8CAA8C,kCAAkC,2CAA2C,6DAA6D,gCAAgC,SAAS,oOAAoO,kDAAkD,iBAAiB,mBAAmB,OAAO,QAAQ,qCAAqC,0GAA0G,0DAA0D,uCAAuC,eAAe,aAAa,uBAAuB,yFAAyF,eAAe,SAAS,uBAAuB,uCAAuC,SAAS,OAAO,kCAAkC,KAAK,gCAAgC,uBAAuB,sJAAsJ,qCAAqC,sDAAsD,6CAA6C,yBAAyB,8CAA8C,WAAW,SAAS,2CAA2C,YAAY,KAAK,GAAG,GAAG,kBAAkB,8IAA8I,8BAA8B,8CAA8C,oHAAoH,eAAe,WAAW,QAAQ,uDAAuD,mDAAmD,4KAA4K,OAAO,qCAAqC,MAAM,GAAG,GAAG,2EAA2E,4BAA4B,wCAAwC,8PAA8P,sCAAsC,sBAAsB,OAAO,6CAA6C,MAAM,oDAAoD,iCAAiC,sFAAsF,uCAAuC,2CAA2C,KAAK,kCAAkC,2DAA2D,uCAAuC,KAAK,iBAAiB,IAAI,mEAAmE,sBAAsB,oMAAoM,kFAAkF,eAAe,OAAO,sDAAsD,cAAc,WAAW,6BAA6B,UAAU,WAAW,qDAAqD,cAAc,sBAAsB,gBAAgB,0BAA0B,WAAW,YAAY,wBAAwB,SAAS,kEAAkE,sDAAsD,iDAAiD,2IAA2I,iMAAiM,sEAAsE,gMAAgM,wNAAwN,0EAA0E,iDAAiD,mJAAmJ,KAAK,8CAA8C,iDAAiD,KAAK,6OAA6O,kFAAkF,aAAa,KAAK,yJAAyJ,sDAAsD,2EAA2E,+BAA+B,qCAAqC,4BAA4B,oCAAoC,OAAO,mCAAmC,4BAA4B,iCAAiC,OAAO,kCAAkC,4BAA4B,gCAAgC,OAAO,uCAAuC,4BAA4B,qCAAqC,OAAO,kCAAkC,4BAA4B,gCAAgC,OAAO,+SAA+S,wMAAwM,wCAAwC,gDAAgD,sDAAsD,gDAAgD,sDAAsD,sDAAsD,cAAc,2BAA2B,kDAAkD,qLAAqL,yCAAyC,yVAAyV,8HAA8H,oDAAoD,sMAAsM,iDAAiD,SAAS,uCAAuC,OAAO,KAAK,GAAG,GAAG,KAAK,+CAA+C,4QAA4Q,+CAA+C,sJAAsJ,4FAA4F,ilBAAilB,oCAAoC,09BAA09B,OAAO,oDAAoD,yCAAyC,OAAO,wWAAwW,qEAAqE,kCAAkC,kCAAkC,0HAA0H,6BAA6B,kEAAkE,kCAAkC,kCAAkC,OAAO,KAAK,+IAA+I,GAAG,oDAAoD,yFAAyF,uBAAuB,8BAA8B,2IAA2I,iBAAiB,SAAS,yBAAyB,0HAA0H,OAAO,MAAM,GAAG,sIAAsI,wFAAwF,iIAAiI,qBAAqB,wCAAwC,iCAAiC,oBAAoB,OAAO,KAAK,GAAG,gHAAgH,+DAA+D,oBAAoB,mBAAmB,KAAK,+BAA+B,kBAAkB,KAAK,gEAAgE,GAAG,sRAAsR,qEAAqE,2BAA2B,0DAA0D,0DAA0D,2HAA2H,mMAAmM,GAAG,2FAA2F,kGAAkG,uGAAuG,eAAe,KAAK,aAAa,OAAO,WAAW,0PAA0P,8EAA8E,OAAO,8HAA8H,wGAAwG,yFAAyF,6FAA6F,0DAA0D,OAAO,6FAA6F,SAAS,+IAA+I,OAAO,kFAAkF,kFAAkF,SAAS,+FAA+F,6FAA6F,SAAS,OAAO,KAAK,4IAA4I,ygBAAygB,KAAK,iCAAiC,GAAG,yDAAyD,4jBAA4jB,+IAA+I,qBAAqB,mBAAmB,OAAO,qBAAqB,KAAK,kiCAAkiC,0FAA0F,+QAA+Q,+BAA+B,iCAAiC,OAAO,KAAK,iEAAiE,uVAAuV,GAAG,oBAAoB,qIAAqI,gBAAgB,yCAAyC,2BAA2B,kHAAkH,8CAA8C,WAAW,SAAS,OAAO,KAAK,8FAA8F,8oBAA8oB,iHAAiH,uGAAuG,sIAAsI,eAAe,OAAO,sMAAsM,qMAAqM,yCAAyC,OAAO,2IAA2I,2EAA2E,4BAA4B,wJAAwJ,+CAA+C,8DAA8D,SAAS,uHAAuH,iBAAiB,SAAS,gRAAgR,uFAAuF,SAAS,iKAAiK,sCAAsC,SAAS,iNAAiN,iCAAiC,6CAA6C,WAAW,OAAO,kCAAkC,WAAW,SAAS,SAAS,OAAO,uLAAuL,uBAAuB,SAAS,4FAA4F,OAAO,KAAK,mDAAmD,+GAA+G,sMAAsM,yCAAyC,OAAO,iIAAiI,2GAA2G,6CAA6C,OAAO,yGAAyG,2CAA2C,OAAO,8GAA8G,yCAAyC,OAAO,yHAAyH,gCAAgC,kEAAkE,OAAO,mBAAmB,KAAK,GAAG,GAAG,uEAAuE,oCAAoC,8CAA8C,yBAAyB,iqBAAiqB,gEAAgE,aAAa,2DAA2D,SAAS,OAAO,8CAA8C,6tBAA6tB,mNAAmN,8QAA8Q,SAAS,8KAA8K,4CAA4C,gDAAgD,SAAS,4DAA4D,OAAO,MAAM,GAAG,GAAG,0GAA0G,uBAAuB,sIAAsI,gBAAgB,cAAc,uDAAuD,aAAa,qBAAqB,OAAO,KAAK,IAAI,2EAA2E,2DAA2D,8BAA8B,0CAA0C,iCAAiC,yCAAyC,wIAAwI,iBAAiB,OAAO,QAAQ,+GAA+G,SAAS,0BAA0B,OAAO,MAAM,oCAAoC,iEAAiE,KAAK,GAAG,GAAG,uBAAuB,kCAAkC,0DAA0D,0CAA0C,iBAAiB,wCAAwC,qCAAqC,4BAA4B,mBAAmB,SAAS,QAAQ,4EAA4E,WAAW,uBAAuB,SAAS,sHAAsH,OAAO,sCAAsC,KAAK,GAAG,GAAG,0DAA0D,wEAAwE,GAAG,uBAAuB,uBAAuB,qFAAqF,uBAAuB,uBAAuB,qDAAqD,6BAA6B,yCAAyC,qBAAqB,uEAAuE,KAAK,sBAAsB,+CAA+C,2GAA2G,KAAK,+BAA+B,6DAA6D,sCAAsC,iJAAiJ,OAAO,OAAO,mCAAmC,OAAO,gEAAgE,kCAAkC,4DAA4D,OAAO,mCAAmC,0BAA0B,OAAO,OAAO,6CAA6C,OAAO,kBAAkB,KAAK,IAAI,qDAAqD,uBAAuB,eAAe,8BAA8B,mBAAmB,qRAAqR,0CAA0C,SAAS,4NAA4N,kIAAkI,uIAAuI,OAAO,+BAA+B,wMAAwM,gDAAgD,SAAS,4JAA4J,yEAAyE,SAAS,OAAO,+CAA+C,SAAS,OAAO,KAAK,IAAI,wJAAwJ,4BAA4B,2DAA2D,6CAA6C,OAAO,KAAK,IAAI,qBAAqB,2BAA2B,eAAe,KAAK,2BAA2B,+CAA+C,KAAK,4BAA4B,qCAAqC,6DAA6D,oGAAoG,yBAAyB,uBAAuB,wEAAwE,iDAAiD,OAAO,OAAO,0DAA0D,OAAO,yBAAyB,KAAK,GAAG,wFAAwF,mCAAmC,wBAAwB,KAAK,GAAG,kCAAkC,GAAG,iGAAiG,yCAAyC,gBAAgB,6KAA6K,WAAW,OAAO,0BAA0B,6BAA6B,wEAAwE,KAAK,2BAA2B,yCAAyC,KAAK,mBAAmB,GAAG,oDAAoD,6JAA6J,WAAW,gBAAgB,YAAY,6EAA6E,+DAA+D,OAAO,KAAK,GAAG,oDAAoD,yKAAyK,uIAAuI,8EAA8E,iDAAiD,qCAAqC,2BAA2B,mCAAmC,uCAAuC,kCAAkC,sBAAsB,WAAW,UAAU,OAAO,uBAAuB,iCAAiC,yGAAyG,2BAA2B,uDAAuD,+BAA+B,WAAW,SAAS,GAAG,OAAO,GAAG,KAAK,+DAA+D,4BAA4B,qCAAqC,6BAA6B,gDAAgD,2DAA2D,yMAAyM,0BAA0B,+DAA+D,OAAO,qBAAqB,WAAW,SAAS,kFAAkF,OAAO,KAAK,uGAAuG,uDAAuD,aAAa,KAAK,oHAAoH,0TAA0T,0IAA0I,qCAAqC,2DAA2D,OAAO,gDAAgD,mCAAmC,+BAA+B,mCAAmC,SAAS,OAAO,2GAA2G,gEAAgE,oDAAoD,+BAA+B,SAAS,OAAO,iJAAiJ,2DAA2D,sHAAsH,mCAAmC,6CAA6C,aAAa,GAAG,2CAA2C,sCAAsC,qEAAqE,aAAa,WAAW,2CAA2C,SAAS,OAAO,KAAK,4BAA4B,kCAAkC,+BAA+B,4CAA4C,6CAA6C,6CAA6C,OAAO,GAAG,KAAK,6DAA6D,0BAA0B,sFAAsF,yBAAyB,yCAAyC,qCAAqC,WAAW,SAAS,OAAO,yDAAyD,0BAA0B,GAAG,SAAS,sGAAsG,oCAAoC,SAAS,uEAAuE,qCAAqC,SAAS,4EAA4E,0JAA0J,iCAAiC,WAAW,8CAA8C,gCAAgC,qDAAqD,WAAW,SAAS,GAAG,OAAO,wGAAwG,oCAAoC,2CAA2C,uBAAuB,0CAA0C,8BAA8B,SAAS,OAAO,KAAK,GAAG,iDAAiD,0CAA0C,qFAAqF,gCAAgC,qCAAqC,6BAA6B,qCAAqC,4BAA4B,4CAA4C,OAAO,+BAA+B,8BAA8B,8BAA8B,OAAO,wCAAwC,2CAA2C,sCAAsC,6BAA6B,mKAAmK,sCAAsC,4CAA4C,4CAA4C,WAAW,SAAS,OAAO,OAAO,uCAAuC,OAAO,KAAK,GAAG,qDAAqD,+IAA+I,gFAAgF,OAAO,4BAA4B,wBAAwB,uBAAuB,SAAS,0ZAA0Z,iBAAiB,gBAAgB,YAAY,mDAAmD,SAAS,yEAAyE,+EAA+E,2BAA2B,SAAS,6GAA6G,2DAA2D,SAAS,gHAAgH,qBAAqB,OAAO,sCAAsC,mDAAmD,mDAAmD,2BAA2B,kDAAkD,gOAAgO,gJAAgJ,yCAAyC,uBAAuB,SAAS,oCAAoC,uMAAuM,0BAA0B,wBAAwB,WAAW,yBAAyB,iBAAiB,gBAAgB,YAAY,+CAA+C,WAAW,qDAAqD,4CAA4C,6DAA6D,iEAAiE,WAAW,OAAO,gEAAgE,WAAW,sBAAsB,SAAS,OAAO,iCAAiC,wDAAwD,aAAa,gBAAgB,YAAY,4FAA4F,qBAAqB,0CAA0C,kHAAkH,SAAS,sBAAsB,OAAO,KAAK,kDAAkD,iDAAiD,mDAAmD,KAAK,iOAAiO,kDAAkD,qFAAqF,QAAQ,uBAAuB,GAAG,kDAAkD,iBAAiB,wCAAwC,oDAAoD,oEAAoE,qBAAqB,OAAO,OAAO,6CAA6C,kCAAkC,yBAAyB,0BAA0B,OAAO,OAAO,6CAA6C,OAAO,iEAAiE,eAAe,gBAAgB,YAAY,8BAA8B,sEAAsE,uDAAuD,OAAO,KAAK,wFAAwF,sBAAsB,iDAAiD,OAAO,OAAO,8CAA8C,OAAO,KAAK,GAAG,GAAG,kDAAkD,sEAAsE,aAAa,8KAA8K,oEAAoE,uBAAuB,OAAO,OAAO,iDAAiD,iDAAiD,0DAA0D,WAAW,OAAO,mDAAmD,SAAS,OAAO,KAAK,gHAAgH,yBAAyB,KAAK,4CAA4C,iCAAiC,oCAAoC,6BAA6B,OAAO,0BAA0B,0CAA0C,OAAO,MAAM,iBAAiB,IAAI,uBAAuB,qDAAqD,6MAA6M,cAAc,4BAA4B,KAAK,yDAAyD,0IAA0I,oIAAoI,mBAAmB,8HAA8H,8BAA8B,WAAW,UAAU,yCAAyC,kIAAkI,KAAK,kDAAkD,yCAAyC,8BAA8B,0BAA0B,wBAAwB,QAAQ,2CAA2C,6BAA6B,0BAA0B,yBAAyB,OAAO,yBAAyB,yCAAyC,OAAO,sCAAsC,0JAA0J,wBAAwB,sDAAsD,uCAAuC,WAAW,SAAS,OAAO,iCAAiC,8EAA8E,yCAAyC,aAAa,WAAW,SAAS,sCAAsC,SAAS,IAAI,iHAAiH,mDAAmD,4BAA4B,sCAAsC,WAAW,SAAS,uOAAuO,uCAAuC,SAAS,OAAO,GAAG,KAAK,+BAA+B,6BAA6B,8BAA8B,OAAO,oCAAoC,gOAAgO,6EAA6E,yEAAyE,sCAAsC,wCAAwC,SAAS,gGAAgG,SAAS,IAAI,kFAAkF,8CAA8C,sCAAsC,WAAW,SAAS,6FAA6F,gBAAgB,YAAY,0DAA0D,+CAA+C,WAAW,SAAS,+DAA+D,OAAO,GAAG,KAAK,GAAG,GAAG,2EAA2E,kCAAkC,6DAA6D,yKAAyK,MAAM,GAAG,GAAG,+DAA+D,kHAAkH,oBAAoB,eAAe,oBAAoB,kBAAkB,sBAAsB,GAAG,2BAA2B,6DAA6D,4DAA4D,MAAM,GAAG,GAAG,uBAAuB,+BAA+B,uDAAuD,yBAAyB,aAAa,mBAAmB,QAAQ,0BAA0B,uIAAuI,gCAAgC,OAAO,KAAK,6BAA6B,uBAAuB,KAAK,sBAAsB,IAAI,yCAAyC,gCAAgC,sBAAsB,IAAI,4BAA4B,gCAAgC,uBAAuB,aAAa,KAAK,wBAAwB,eAAe,IAAI,iCAAiC,sBAAsB,IAAI,wBAAwB,uEAAuE,+GAA+G,+DAA+D,0BAA0B,wDAAwD,oDAAoD,+BAA+B,uCAAuC,QAAQ,KAAK,GAAG,IAAI,oBAAoB,+KAA+K,gCAAgC,mIAAmI,oIAAoI,oIAAoI,wBAAwB,2BAA2B,+CAA+C,GAAG,KAAK,2DAA2D,uBAAuB,mCAAmC,4EAA4E,KAAK,qCAAqC,oCAAoC,wCAAwC,OAAO,GAAG,KAAK,GAAG,GAAG,oBAAoB,yCAAyC,mDAAmD,gIAAgI,eAAe,OAAO,sHAAsH,gDAAgD,OAAO,sKAAsK,kIAAkI,OAAO,oCAAoC,+BAA+B,0CAA0C,iBAAiB,SAAS,+GAA+G,qBAAqB,SAAS,kDAAkD,qBAAqB,OAAO,wFAAwF,mBAAmB,OAAO,6CAA6C,oHAAoH,KAAK,mBAAmB,aAAa,sCAAsC,uGAAuG,iCAAiC,iDAAiD,wBAAwB,+BAA+B,aAAa,yBAAyB,WAAW,SAAS,OAAO,KAAK,4CAA4C,wOAAwO,iDAAiD,+CAA+C,uCAAuC,SAAS,OAAO,KAAK,GAAG,GAAG,iDAAiD,wCAAwC,8BAA8B,gGAAgG,OAAO,OAAO,wCAAwC,OAAO,kBAAkB,KAAK,IAAI,uFAAuF,wDAAwD,0DAA0D,iEAAiE,uBAAuB,sIAAsI,0CAA0C,2FAA2F,6CAA6C,OAAO,iBAAiB,MAAM,GAAG,GAAG,kGAAkG,uBAAuB,mCAAmC,4EAA4E,KAAK,qCAAqC,oCAAoC,sDAAsD,OAAO,GAAG,KAAK,GAAG,GAAG,oBAAoB,yCAAyC,mDAAmD,gIAAgI,eAAe,OAAO,wDAAwD,oFAAoF,yCAAyC,OAAO,oCAAoC,6GAA6G,qBAAqB,SAAS,0CAA0C,OAAO,wFAAwF,mBAAmB,OAAO,4BAA4B,KAAK,mBAAmB,iBAAiB,+BAA+B,iRAAiR,6BAA6B,4CAA4C,WAAW,gJAAgJ,qBAAqB,WAAW,sBAAsB,SAAS,OAAO,KAAK,iBAAiB,8DAA8D,GAAG,GAAG,qWAAqW,iCAAiC,6BAA6B,4FAA4F,4CAA4C,0CAA0C,SAAS,oBAAoB,OAAO,8BAA8B,4FAA4F,uBAAuB,+BAA+B,sCAAsC,4CAA4C,WAAW,SAAS,OAAO,MAAM,GAAG,yNAAyN,gDAAgD,GAAG,GAAG,oLAAoL,sDAAsD,kCAAkC,KAAK,iCAAiC,uEAAuE,GAAG,sCAAsC,mCAAmC,mBAAmB,KAAK,wCAAwC,gDAAgD,KAAK,cAAc,GAAG,uBAAuB,iCAAiC,8DAA8D,oCAAoC,yCAAyC,6EAA6E,SAAS,GAAG,OAAO,6CAA6C,kCAAkC,sCAAsC,sCAAsC,wFAAwF,wBAAwB,wBAAwB,uBAAuB,QAAQ,0CAA0C,mEAAmE,yCAAyC,eAAe,aAAa,uHAAuH,4CAA4C,yDAAyD,aAAa,WAAW,SAAS,GAAG,OAAO,oBAAoB,KAAK,uCAAuC,8DAA8D,oCAAoC,yCAAyC,gFAAgF,SAAS,GAAG,OAAO,kCAAkC,4CAA4C,OAAO,6CAA6C,kCAAkC,sCAAsC,sCAAsC,wKAAwK,wBAAwB,wBAAwB,uBAAuB,QAAQ,0CAA0C,gHAAgH,sEAAsE,eAAe,aAAa,uHAAuH,4CAA4C,yDAAyD,aAAa,WAAW,SAAS,GAAG,OAAO,oBAAoB,KAAK,iDAAiD,0IAA0I,oCAAoC,yCAAyC,mIAAmI,SAAS,GAAG,OAAO,gEAAgE,6EAA6E,OAAO,6CAA6C,sCAAsC,6BAA6B,4EAA4E,wBAAwB,uBAAuB,QAAQ,wCAAwC,gHAAgH,4CAA4C,aAAa,OAAO,yCAAyC,aAAa,WAAW,6CAA6C,0DAA0D,uCAAuC,4BAA4B,sGAAsG,WAAW,oVAAoV,wLAAwL,WAAW,SAAS,OAAO,GAAG,KAAK,uCAAuC,wCAAwC,6CAA6C,wCAAwC,mIAAmI,sBAAsB,SAAS,OAAO,qBAAqB,KAAK,GAAG,GAAG,+BAA+B,uBAAuB,4BAA4B,+DAA+D,kCAAkC,qBAAqB,4GAA4G,qIAAqI,uBAAuB,WAAW,6BAA6B,0FAA0F,gDAAgD,WAAW,yGAAyG,SAAS,iBAAiB,OAAO,8CAA8C,yCAAyC,gBAAgB,sCAAsC,iBAAiB,SAAS,kCAAkC,4DAA4D,SAAS,OAAO,sBAAsB,SAAS,0CAA0C,sDAAsD,qBAAqB,WAAW,wCAAwC,sBAAsB,WAAW,mCAAmC,oDAAoD,uDAAuD,WAAW,GAAG,SAAS,iGAAiG,qKAAqK,2BAA2B,SAAS,OAAO,GAAG,KAAK,GAAG,GAAG,oBAAoB,eAAe,eAAe,+BAA+B,0DAA0D,yUAAyU,SAAS,OAAO,gBAAgB,+BAA+B,gPAAgP,8BAA8B,oBAAoB,aAAa,OAAO,gCAAgC,WAAW,qEAAqE,SAAS,QAAQ,kCAAkC,gZAAgZ,qGAAqG,mFAAmF,6BAA6B,eAAe,mFAAmF,aAAa,WAAW,0BAA0B,SAAS,yCAAyC,iJAAiJ,2BAA2B,kCAAkC,qLAAqL,+BAA+B,aAAa,2DAA2D,gHAAgH,oCAAoC,WAAW,wBAAwB,SAAS,OAAO,KAAK,GAAG,GAAG,kGAAkG,+BAA+B,oCAAoC,uCAAuC,uFAAuF,SAAS,OAAO,MAAM,6BAA6B,sDAAsD,6EAA6E,QAAQ,KAAK,GAAG,GAAG,yFAAyF,iBAAiB,oBAAoB,2BAA2B,0EAA0E,6BAA6B,gDAAgD,kBAAkB,KAAK,gGAAgG,6EAA6E,KAAK,eAAe,gFAAgF,oCAAoC,oIAAoI,kCAAkC,WAAW,4CAA4C,KAAK,eAAe,IAAI,uGAAuG,0BAA0B,MAAM,kCAAkC,4DAA4D,qRAAqR,0DAA0D,6GAA6G,eAAe,OAAO,4CAA4C,uGAAuG,eAAe,OAAO,2CAA2C,gCAAgC,yFAAyF,kCAAkC,0BAA0B,OAAO,0DAA0D,sNAAsN,oDAAoD,0EAA0E,iDAAiD,uJAAuJ,uFAAuF,4BAA4B,4BAA4B,OAAO,iLAAiL,4GAA4G,gGAAgG,eAAe,OAAO,sIAAsI,uHAAuH,oDAAoD,uDAAuD,+BAA+B,SAAS,eAAe,KAAK,yBAAyB,gCAAgC,oBAAoB,SAAS,mJAAmJ,0EAA0E,SAAS,OAAO,sDAAsD,6EAA6E,0BAA0B,qFAAqF,mKAAmK,uBAAuB,oCAAoC,SAAS,oEAAoE,4DAA4D,mDAAmD,yCAAyC,mCAAmC,WAAW,SAAS,OAAO,wBAAwB,uHAAuH,6IAA6I,+PAA+P,+GAA+G,0BAA0B,oCAAoC,aAAa,qIAAqI,mDAAmD,4EAA4E,aAAa,6BAA6B,mDAAmD,+EAA+E,aAAa,iDAAiD,0BAA0B,mCAAmC,aAAa,WAAW,SAAS,OAAO,4BAA4B,KAAK,0JAA0J,8EAA8E,yDAAyD,QAAQ,8CAA8C,KAAK,KAAK,GAAG,uBAAuB,uCAAuC,oCAAoC,iDAAiD,OAAO,GAAG,KAAK,6CAA6C,2BAA2B,mBAAmB,8DAA8D,OAAO,KAAK,GAAG,GAAG,+KAA+K,2DAA2D,aAAa,mCAAmC,0EAA0E,uDAAuD,4EAA4E,WAAW,OAAO,8PAA8P,SAAS,OAAO,GAAG,OAAO,2DAA2D,4DAA4D,oFAAoF,OAAO,OAAO,OAAO,0DAA0D,KAAK,GAAG,sIAAsI,0EAA0E,iLAAiL,0HAA0H,QAAQ,wBAAwB,kBAAkB,KAAK,6JAA6J,wEAAwE,qCAAqC,OAAO,GAAG,OAAO,OAAO,0JAA0J,6DAA6D,OAAO,KAAK,sEAAsE,IAAI,uBAAuB,2BAA2B,mDAAmD,KAAK,iCAAiC,mCAAmC,sIAAsI,8DAA8D,OAAO,uBAAuB,6BAA6B,mRAAmR,OAAO,8BAA8B,uCAAuC,8BAA8B,sBAAsB,SAAS,uCAAuC,mDAAmD,oBAAoB,4DAA4D,WAAW,GAAG,SAAS,kBAAkB,4DAA4D,OAAO,SAAS,KAAK,GAAG,GAAG,sxBAAsxB,wNAAwN,0DAA0D,oLAAoL,sCAAsC,kIAAkI,8GAA8G,yDAAyD,kCAAkC,mCAAmC,OAAO,qHAAqH,mCAAmC,2GAA2G,6EAA6E,oDAAoD,oFAAoF,0CAA0C,OAAO,iFAAiF,WAAW,SAAS,OAAO,MAAM,GAAG,qJAAqJ,wBAAwB,uDAAuD,oCAAoC,mBAAmB,mCAAmC,mFAAmF,wFAAwF,6HAA6H,6DAA6D,yCAAyC,uBAAuB,SAAS,+BAA+B,qDAAqD,SAAS,OAAO,GAAG,sBAAsB,KAAK,0FAA0F,GAAG,4JAA4J,4EAA4E,0BAA0B,uCAAuC,6DAA6D,2BAA2B,OAAO,KAAK,iBAAiB,0CAA0C,KAAK,oBAAoB,GAAG,sOAAsO,2GAA2G,yGAAyG,wBAAwB,+BAA+B,uEAAuE,OAAO,KAAK,wEAAwE,gCAAgC,gEAAgE,oCAAoC,gBAAgB,SAAS,OAAO,KAAK,6GAA6G,qCAAqC,KAAK,OAAO,qEAAqE,iFAAiF,+BAA+B,gBAAgB,SAAS,+BAA+B,+BAA+B,SAAS,OAAO,qFAAqF,KAAK,qJAAqJ,+CAA+C,2CAA2C,OAAO,wCAAwC,KAAK,GAAG,6LAA6L,6DAA6D,2HAA2H,8EAA8E,oCAAoC,gEAAgE,OAAO,KAAK,kCAAkC,mEAAmE,4CAA4C,wDAAwD,OAAO,4FAA4F,wDAAwD,OAAO,uBAAuB,kCAAkC,wBAAwB,sGAAsG,2BAA2B,4FAA4F,iDAAiD,8HAA8H,iEAAiE,yCAAyC,oFAAoF,2CAA2C,gLAAgL,6BAA6B,8FAA8F,+CAA+C,qFAAqF,2CAA2C,uCAAuC,kDAAkD,mBAAmB,wBAAwB,iBAAiB,eAAe,aAAa,WAAW,sFAAsF,gHAAgH,0CAA0C,aAAa,OAAO,mBAAmB,4CAA4C,eAAe,cAAc,wBAAwB,kJAAkJ,eAAe,aAAa,WAAW,SAAS,OAAO,KAAK,cAAc,sCAAsC,GAAG,oBAAoB,+IAA+I,aAAa,sBAAsB,yNAAyN,4MAA4M,2BAA2B,sLAAsL,oBAAoB,kFAAkF,0BAA0B,iGAAiG,yIAAyI,2SAA2S,yNAAyN,8CAA8C,KAAK,iNAAiN,8NAA8N,KAAK,qLAAqL,kGAAkG,sBAAsB,wBAAwB,OAAO,sEAAsE,olBAAolB,oiBAAoiB,4EAA4E,iCAAiC,yGAAyG,uHAAuH,sBAAsB,8BAA8B,uCAAuC,qCAAqC,8EAA8E,oMAAoM,iBAAiB,eAAe,mEAAmE,aAAa,+DAA+D,WAAW,uEAAuE,4DAA4D,WAAW,sFAAsF,sCAAsC,kIAAkI,6CAA6C,aAAa,wBAAwB,WAAW,oGAAoG,sCAAsC,gCAAgC,aAAa,wBAAwB,WAAW,iFAAiF,qBAAqB,wBAAwB,gCAAgC,0GAA0G,eAAe,OAAO,qHAAqH,2EAA2E,iBAAiB,eAAe,aAAa,wBAAwB,WAAW,2EAA2E,mDAAmD,8BAA8B,2CAA2C,aAAa,iCAAiC,wBAAwB,WAAW,UAAU,2DAA2D,wUAAwU,mIAAmI,8HAA8H,mIAAmI,oDAAoD,qLAAqL,iCAAiC,gKAAgK,yIAAyI,SAAS,cAAc,8KAA8K,SAAS,OAAO,qHAAqH,uDAAuD,OAAO,gGAAgG,wFAAwF,qBAAqB,OAAO,oMAAoM,6FAA6F,8CAA8C,OAAO,iEAAiE,2FAA2F,mNAAmN,yFAAyF,sGAAsG,yJAAyJ,2EAA2E,wGAAwG,SAAS,uFAAuF,4DAA4D,mHAAmH,SAAS,oHAAoH,oFAAoF,iIAAiI,8CAA8C,OAAO,mHAAmH,gDAAgD,2FAA2F,SAAS,wCAAwC,+EAA+E,SAAS,OAAO,+IAA+I,kEAAkE,OAAO,iSAAiS,wDAAwD,iEAAiE,oDAAoD,OAAO,wKAAwK,8EAA8E,OAAO,0EAA0E,kFAAkF,8BAA8B,4BAA4B,yGAAyG,kEAAkE,qCAAqC,OAAO,OAAO,6BAA6B,0DAA0D,mEAAmE,SAAS,yFAAyF,uBAAuB,SAAS,6DAA6D,wDAAwD,uCAAuC,WAAW,cAAc,SAAS,eAAe,4BAA4B,iDAAiD,SAAS,cAAc,6EAA6E,oBAAoB,WAAW,kEAAkE,SAAS,OAAO,oHAAoH,kGAAkG,gEAAgE,iBAAiB,SAAS,2BAA2B,oEAAoE,8CAA8C,SAAS,0JAA0J,mFAAmF,yEAAyE,wGAAwG,wDAAwD,gEAAgE,SAAS,mNAAmN,0DAA0D,SAAS,gJAAgJ,0EAA0E,2HAA2H,oEAAoE,6BAA6B,yDAAyD,aAAa,2DAA2D,6BAA6B,iDAAiD,aAAa,WAAW,oFAAoF,uCAAuC,yCAAyC,6BAA6B,yCAAyC,2DAA2D,OAAO,wCAAwC,oCAAoC,mCAAmC,+BAA+B,WAAW,SAAS,OAAO,sGAAsG,wCAAwC,mCAAmC,+BAA+B,yBAAyB,aAAa,WAAW,SAAS,2EAA2E,qEAAqE,oDAAoD,kFAAkF,SAAS,OAAO,+EAA+E,SAAS,8EAA8E,+BAA+B,8BAA8B,0IAA0I,SAAS,iGAAiG,8BAA8B,uEAAuE,oFAAoF,iDAAiD,WAAW,SAAS,OAAO,qBAAqB,KAAK,iDAAiD,yDAAyD,KAAK,6CAA6C,gEAAgE,KAAK,GAAG,GAAG,gEAAgE,8DAA8D,wFAAwF,gCAAgC,wBAAwB,yBAAyB,OAAO,iHAAiH,gHAAgH,yCAAyC,MAAM,GAAG,GAAG,yCAAyC,UAAU,4BAA4B,mDAAmD,+CAA+C,OAAO,KAAK,GAAG,GAAG,uDAAuD,yBAAyB,6aAA6a,sCAAsC,OAAO,yCAAyC,oDAAoD,OAAO,KAAK,GAAG,IAAI,yBAAyB,+BAA+B,eAAe,0BAA0B,mCAAmC,wCAAwC,SAAS,gIAAgI,uCAAuC,yCAAyC,SAAS,gCAAgC,0BAA0B,8CAA8C,0CAA0C,WAAW,wBAAwB,SAAS,kBAAkB,OAAO,oBAAoB,KAAK,oCAAoC,iCAAiC,yCAAyC,2DAA2D,SAAS,GAAG,OAAO,sCAAsC,uEAAuE,kCAAkC,mCAAmC,WAAW,OAAO,8BAA8B,SAAS,OAAO,GAAG,KAAK,+BAA+B,8CAA8C,yCAAyC,+EAA+E,OAAO,GAAG,KAAK,qCAAqC,gEAAgE,sDAAsD,OAAO,GAAG,kBAAkB,KAAK,GAAG,GAAG,qDAAqD,gDAAgD,IAAI,kDAAkD,uFAAuF,IAAI,gDAAgD,SAAS,yCAAyC,KAAK,eAAe,IAAI,4BAA4B,mMAAmM,8CAA8C,6EAA6E,+CAA+C,+CAA+C,gCAAgC,uIAAuI,cAAc,6CAA6C,gDAAgD,qKAAqK,kFAAkF,4CAA4C,gDAAgD,aAAa,WAAW,sGAAsG,qDAAqD,WAAW,0aAA0a,iEAAiE,WAAW,0DAA0D,oDAAoD,WAAW,8DAA8D,+BAA+B,+BAA+B,sKAAsK,6CAA6C,8BAA8B,iBAAiB,iCAAiC,wOAAwO,6CAA6C,mBAAmB,OAAO,8FAA8F,qHAAqH,mBAAmB,iBAAiB,OAAO,wdAAwd,uBAAuB,yBAAyB,yBAAyB,oEAAoE,iBAAiB,eAAe,cAAc,YAAY,iEAAiE,8EAA8E,yKAAyK,wCAAwC,WAAW,OAAO,iDAAiD,2GAA2G,4QAA4Q,mCAAmC,oCAAoC,mBAAmB,iBAAiB,GAAG,eAAe,cAAc,WAAW,mFAAmF,iBAAiB,qIAAqI,WAAW,cAAc,mHAAmH,sBAAsB,aAAa,WAAW,SAAS,8BAA8B,2BAA2B,uBAAuB,WAAW,SAAS,QAAQ,KAAK,GAAG,GAAG,0IAA0I,0BAA0B,gCAAgC,KAAK,GAAG,GAAG,mDAAmD,cAAc,8HAA8H,gBAAgB,8CAA8C,kBAAkB,yCAAyC,kCAAkC,oBAAoB,OAAO,KAAK,GAAG,GAAG,qGAAqG,kCAAkC,sBAAsB,KAAK,0BAA0B,uBAAuB,KAAK,GAAG,GAAG,wFAAwF,2HAA2H,2BAA2B,cAAc,uCAAuC,+EAA+E,sBAAsB,uCAAuC,+DAA+D,8BAA8B,8BAA8B,0BAA0B,yEAAyE,eAAe,aAAa,GAAG,iIAAiI,SAAS,4BAA4B,2BAA2B,uBAAuB,WAAW,SAAS,QAAQ,KAAK,GAAG,GAAG,oEAAoE,kDAAkD,uDAAuD,yFAAyF,8BAA8B,sBAAsB,KAAK,GAAG,GAAG,yJAAyJ,yUAAyU,4IAA4I,uMAAuM,uEAAuE,+EAA+E,OAAO,gCAAgC,2FAA2F,OAAO,yHAAyH,mCAAmC,6DAA6D,SAAS,sCAAsC,QAAQ,gEAAgE,sEAAsE,2CAA2C,sCAAsC,QAAQ,qFAAqF,iGAAiG,sDAAsD,yDAAyD,OAAO,+CAA+C,SAAS,gEAAgE,yIAAyI,gGAAgG,SAAS,4HAA4H,gDAAgD,SAAS,sDAAsD,OAAO,GAAG,qDAAqD,KAAK,GAAG,GAAG,4WAA4W,uEAAuE,oDAAoD,wCAAwC,GAAG,KAAK,iTAAiT,uCAAuC,gBAAgB,KAAK,2CAA2C,4BAA4B,sBAAsB,KAAK,gCAAgC,uBAAuB,kKAAkK,qEAAqE,uMAAuM,2CAA2C,yCAAyC,OAAO,OAAO,2BAA2B,OAAO,KAAK,uCAAuC,iCAAiC,sCAAsC,sDAAsD,KAAK,2DAA2D,wCAAwC,iCAAiC,KAAK,mDAAmD,IAAI,+FAA+F,oFAAoF,uBAAuB,sDAAsD,gCAAgC,KAAK,4DAA4D,mEAAmE,yBAAyB,6CAA6C,qDAAqD,sBAAsB,KAAK,oFAAoF,oBAAoB,gSAAgS,mCAAmC,oFAAoF,sVAAsV,mOAAmO,kDAAkD,+BAA+B,oFAAoF,SAAS,GAAG,OAAO,GAAG,KAAK,kBAAkB,IAAI,2DAA2D,uDAAuD,8BAA8B,KAAK,UAAU,IAAI,2BAA2B,6CAA6C,oMAAoM,iHAAiH,2CAA2C,OAAO,qCAAqC,8CAA8C,gDAAgD,gJAAgJ,+JAA+J,yCAAyC,iCAAiC,mCAAmC,SAAS,OAAO,8CAA8C,gDAAgD,OAAO,sCAAsC,qJAAqJ,gBAAgB,OAAO,oCAAoC,6DAA6D,OAAO,mCAAmC,iEAAiE,OAAO,qCAAqC,0CAA0C,SAAS,OAAO,6BAA6B,OAAO,KAAK,IAAI,uBAAuB,yGAAyG,sEAAsE,0FAA0F,wDAAwD,WAAW,GAAG,OAAO,+CAA+C,sBAAsB,eAAe,OAAO,2PAA2P,gBAAgB,mBAAmB,OAAO,uIAAuI,2CAA2C,cAAc,yFAAyF,KAAK,oLAAoL,yBAAyB,eAAe,OAAO,uFAAuF,mBAAmB,iKAAiK,8HAA8H,SAAS,OAAO,+BAA+B,8LAA8L,gEAAgE,sLAAsL,mDAAmD,SAAS,qFAAqF,sJAAsJ,mFAAmF,qFAAqF,SAAS,OAAO,oEAAoE,qLAAqL,KAAK,ylBAAylB,mCAAmC,6CAA6C,6FAA6F,mDAAmD,SAAS,iDAAiD,OAAO,GAAG,KAAK,GAAG,GAAG,8DAA8D,0DAA0D,4BAA4B,uCAAuC,6CAA6C,0DAA0D,2DAA2D,iCAAiC,qBAAqB,SAAS,kCAAkC,iCAAiC,SAAS,oCAAoC,oDAAoD,SAAS,sBAAsB,mHAAmH,WAAW,OAAO,+BAA+B,SAAS,OAAO,kCAAkC,MAAM,GAAG,GAAG,kUAAkU,oJAAoJ,oGAAoG,yBAAyB,0CAA0C,yLAAyL,SAAS,OAAO,MAAM,GAAG,GAAG,0GAA0G,uCAAuC,0BAA0B,kBAAkB,qFAAqF,sCAAsC,8GAA8G,gMAAgM,8DAA8D,kBAAkB,qCAAqC,yPAAyP,WAAW,iFAAiF,uCAAuC,+VAA+V,WAAW,uRAAuR,SAAS,oDAAoD,QAAQ,KAAK,GAAG,GAAG,GAAG,6JAA6J,wCAAwC,iCAAiC,MAAM,GAAG,GAAG,6BAA6B,yCAAyC,8CAA8C,KAAK,oCAAoC,yCAAyC,KAAK,wDAAwD,kDAAkD,KAAK,kDAAkD,mLAAmL,KAAK,yCAAyC,qEAAqE,KAAK,GAAG,GAAG,+QAA+Q,+EAA+E,+GAA+G,QAAQ,KAAK,IAAI,+TAA+T,wQAAwQ,yBAAyB,4CAA4C,0BAA0B,mBAAmB,eAAe,KAAK,oKAAoK,uBAAuB,KAAK,6DAA6D,wBAAwB,iFAAiF,MAAM,iJAAiJ,mBAAmB,IAAI,yCAAyC,iBAAiB,yBAAyB,KAAK,OAAO,2BAA2B,KAAK,IAAI,iCAAiC,gCAAgC,6BAA6B,iCAAiC,6BAA6B,+BAA+B,uBAAuB,0BAA0B,wCAAwC,4LAA4L,0SAA0S,IAAI,oCAAoC,oFAAoF,IAAI,s5BAAs5B,wCAAwC,oBAAoB,KAAK,GAAG,GAAG,oJAAoJ,0CAA0C,gCAAgC,oBAAoB,KAAK,+CAA+C,8BAA8B,KAAK,oBAAoB,IAAI,yNAAyN,sCAAsC,GAAG,wBAAwB,GAAG,GAAG,G;;;;;;;ACAts0T;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,EAAE;AACF;AACA;AACA;;;;;;;;AC1BA,iL;;;;;;;ACAA,4L;;;;;;;ACAA,iL;;;;;;;ACAA,uJ","file":"scripts.a812b1245aef88d9577b.bundle.js","sourcesContent":["module.exports = \"/* =========================================================\\n * bootstrap-datepicker.js\\n * Repo: https://github.com/uxsolutions/bootstrap-datepicker/\\n * Demo: https://eternicode.github.io/bootstrap-datepicker/\\n * Docs: https://bootstrap-datepicker.readthedocs.org/\\n * =========================================================\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n * http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n * ========================================================= */\\n\\n(function(factory){\\n if (typeof define === \\\"function\\\" && define.amd) {\\n define([\\\"jquery\\\"], factory);\\n } else if (typeof exports === 'object') {\\n factory(require('jquery'));\\n } else {\\n factory(jQuery);\\n }\\n}(function($, undefined){\\n\\tfunction UTCDate(){\\n\\t\\treturn new Date(Date.UTC.apply(Date, arguments));\\n\\t}\\n\\tfunction UTCToday(){\\n\\t\\tvar today = new Date();\\n\\t\\treturn UTCDate(today.getFullYear(), today.getMonth(), today.getDate());\\n\\t}\\n\\tfunction isUTCEquals(date1, date2) {\\n\\t\\treturn (\\n\\t\\t\\tdate1.getUTCFullYear() === date2.getUTCFullYear() &&\\n\\t\\t\\tdate1.getUTCMonth() === date2.getUTCMonth() &&\\n\\t\\t\\tdate1.getUTCDate() === date2.getUTCDate()\\n\\t\\t);\\n\\t}\\n\\tfunction alias(method, deprecationMsg){\\n\\t\\treturn function(){\\n\\t\\t\\tif (deprecationMsg !== undefined) {\\n\\t\\t\\t\\t$.fn.datepicker.deprecated(deprecationMsg);\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this[method].apply(this, arguments);\\n\\t\\t};\\n\\t}\\n\\tfunction isValidDate(d) {\\n\\t\\treturn d && !isNaN(d.getTime());\\n\\t}\\n\\n\\tvar DateArray = (function(){\\n\\t\\tvar extras = {\\n\\t\\t\\tget: function(i){\\n\\t\\t\\t\\treturn this.slice(i)[0];\\n\\t\\t\\t},\\n\\t\\t\\tcontains: function(d){\\n\\t\\t\\t\\t// Array.indexOf is not cross-browser;\\n\\t\\t\\t\\t// $.inArray doesn't work with Dates\\n\\t\\t\\t\\tvar val = d && d.valueOf();\\n\\t\\t\\t\\tfor (var i=0, l=this.length; i < l; i++)\\n // Use date arithmetic to allow dates with different times to match\\n if (0 <= this[i].valueOf() - val && this[i].valueOf() - val < 1000*60*60*24)\\n\\t\\t\\t\\t\\t\\treturn i;\\n\\t\\t\\t\\treturn -1;\\n\\t\\t\\t},\\n\\t\\t\\tremove: function(i){\\n\\t\\t\\t\\tthis.splice(i,1);\\n\\t\\t\\t},\\n\\t\\t\\treplace: function(new_array){\\n\\t\\t\\t\\tif (!new_array)\\n\\t\\t\\t\\t\\treturn;\\n\\t\\t\\t\\tif (!$.isArray(new_array))\\n\\t\\t\\t\\t\\tnew_array = [new_array];\\n\\t\\t\\t\\tthis.clear();\\n\\t\\t\\t\\tthis.push.apply(this, new_array);\\n\\t\\t\\t},\\n\\t\\t\\tclear: function(){\\n\\t\\t\\t\\tthis.length = 0;\\n\\t\\t\\t},\\n\\t\\t\\tcopy: function(){\\n\\t\\t\\t\\tvar a = new DateArray();\\n\\t\\t\\t\\ta.replace(this);\\n\\t\\t\\t\\treturn a;\\n\\t\\t\\t}\\n\\t\\t};\\n\\n\\t\\treturn function(){\\n\\t\\t\\tvar a = [];\\n\\t\\t\\ta.push.apply(a, arguments);\\n\\t\\t\\t$.extend(a, extras);\\n\\t\\t\\treturn a;\\n\\t\\t};\\n\\t})();\\n\\n\\n\\t// Picker object\\n\\n\\tvar Datepicker = function(element, options){\\n\\t\\t$.data(element, 'datepicker', this);\\n\\t\\tthis._process_options(options);\\n\\n\\t\\tthis.dates = new DateArray();\\n\\t\\tthis.viewDate = this.o.defaultViewDate;\\n\\t\\tthis.focusDate = null;\\n\\n\\t\\tthis.element = $(element);\\n\\t\\tthis.isInput = this.element.is('input');\\n\\t\\tthis.inputField = this.isInput ? this.element : this.element.find('input');\\n\\t\\tthis.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .btn') : false;\\n\\t\\tif (this.component && this.component.length === 0)\\n\\t\\t\\tthis.component = false;\\n\\t\\tthis.isInline = !this.component && this.element.is('div');\\n\\n\\t\\tthis.picker = $(DPGlobal.template);\\n\\n\\t\\t// Checking templates and inserting\\n\\t\\tif (this._check_template(this.o.templates.leftArrow)) {\\n\\t\\t\\tthis.picker.find('.prev').html(this.o.templates.leftArrow);\\n\\t\\t}\\n\\n\\t\\tif (this._check_template(this.o.templates.rightArrow)) {\\n\\t\\t\\tthis.picker.find('.next').html(this.o.templates.rightArrow);\\n\\t\\t}\\n\\n\\t\\tthis._buildEvents();\\n\\t\\tthis._attachEvents();\\n\\n\\t\\tif (this.isInline){\\n\\t\\t\\tthis.picker.addClass('datepicker-inline').appendTo(this.element);\\n\\t\\t}\\n\\t\\telse {\\n\\t\\t\\tthis.picker.addClass('datepicker-dropdown dropdown-menu');\\n\\t\\t}\\n\\n\\t\\tif (this.o.rtl){\\n\\t\\t\\tthis.picker.addClass('datepicker-rtl');\\n\\t\\t}\\n\\n\\t\\tif (this.o.calendarWeeks) {\\n\\t\\t\\tthis.picker.find('.datepicker-days .datepicker-switch, thead .datepicker-title, tfoot .today, tfoot .clear')\\n\\t\\t\\t\\t.attr('colspan', function(i, val){\\n\\t\\t\\t\\t\\treturn Number(val) + 1;\\n\\t\\t\\t\\t});\\n\\t\\t}\\n\\n\\t\\tthis._process_options({\\n\\t\\t\\tstartDate: this._o.startDate,\\n\\t\\t\\tendDate: this._o.endDate,\\n\\t\\t\\tdaysOfWeekDisabled: this.o.daysOfWeekDisabled,\\n\\t\\t\\tdaysOfWeekHighlighted: this.o.daysOfWeekHighlighted,\\n\\t\\t\\tdatesDisabled: this.o.datesDisabled\\n\\t\\t});\\n\\n\\t\\tthis._allow_update = false;\\n\\t\\tthis.setViewMode(this.o.startView);\\n\\t\\tthis._allow_update = true;\\n\\n\\t\\tthis.fillDow();\\n\\t\\tthis.fillMonths();\\n\\n\\t\\tthis.update();\\n\\n\\t\\tif (this.isInline){\\n\\t\\t\\tthis.show();\\n\\t\\t}\\n\\t};\\n\\n\\tDatepicker.prototype = {\\n\\t\\tconstructor: Datepicker,\\n\\n\\t\\t_resolveViewName: function(view){\\n\\t\\t\\t$.each(DPGlobal.viewModes, function(i, viewMode){\\n\\t\\t\\t\\tif (view === i || $.inArray(view, viewMode.names) !== -1){\\n\\t\\t\\t\\t\\tview = i;\\n\\t\\t\\t\\t\\treturn false;\\n\\t\\t\\t\\t}\\n\\t\\t\\t});\\n\\n\\t\\t\\treturn view;\\n\\t\\t},\\n\\n\\t\\t_resolveDaysOfWeek: function(daysOfWeek){\\n\\t\\t\\tif (!$.isArray(daysOfWeek))\\n\\t\\t\\t\\tdaysOfWeek = daysOfWeek.split(/[,\\\\s]*/);\\n\\t\\t\\treturn $.map(daysOfWeek, Number);\\n\\t\\t},\\n\\n\\t\\t_check_template: function(tmp){\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// If empty\\n\\t\\t\\t\\tif (tmp === undefined || tmp === \\\"\\\") {\\n\\t\\t\\t\\t\\treturn false;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t// If no html, everything ok\\n\\t\\t\\t\\tif ((tmp.match(/[<>]/g) || []).length <= 0) {\\n\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t// Checking if html is fine\\n\\t\\t\\t\\tvar jDom = $(tmp);\\n\\t\\t\\t\\treturn jDom.length > 0;\\n\\t\\t\\t}\\n\\t\\t\\tcatch (ex) {\\n\\t\\t\\t\\treturn false;\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\t_process_options: function(opts){\\n\\t\\t\\t// Store raw options for reference\\n\\t\\t\\tthis._o = $.extend({}, this._o, opts);\\n\\t\\t\\t// Processed options\\n\\t\\t\\tvar o = this.o = $.extend({}, this._o);\\n\\n\\t\\t\\t// Check if \\\"de-DE\\\" style date is available, if not language should\\n\\t\\t\\t// fallback to 2 letter code eg \\\"de\\\"\\n\\t\\t\\tvar lang = o.language;\\n\\t\\t\\tif (!dates[lang]){\\n\\t\\t\\t\\tlang = lang.split('-')[0];\\n\\t\\t\\t\\tif (!dates[lang])\\n\\t\\t\\t\\t\\tlang = defaults.language;\\n\\t\\t\\t}\\n\\t\\t\\to.language = lang;\\n\\n\\t\\t\\t// Retrieve view index from any aliases\\n\\t\\t\\to.startView = this._resolveViewName(o.startView);\\n\\t\\t\\to.minViewMode = this._resolveViewName(o.minViewMode);\\n\\t\\t\\to.maxViewMode = this._resolveViewName(o.maxViewMode);\\n\\n\\t\\t\\t// Check view is between min and max\\n\\t\\t\\to.startView = Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, o.startView));\\n\\n\\t\\t\\t// true, false, or Number > 0\\n\\t\\t\\tif (o.multidate !== true){\\n\\t\\t\\t\\to.multidate = Number(o.multidate) || false;\\n\\t\\t\\t\\tif (o.multidate !== false)\\n\\t\\t\\t\\t\\to.multidate = Math.max(0, o.multidate);\\n\\t\\t\\t}\\n\\t\\t\\to.multidateSeparator = String(o.multidateSeparator);\\n\\n\\t\\t\\to.weekStart %= 7;\\n\\t\\t\\to.weekEnd = (o.weekStart + 6) % 7;\\n\\n\\t\\t\\tvar format = DPGlobal.parseFormat(o.format);\\n\\t\\t\\tif (o.startDate !== -Infinity){\\n\\t\\t\\t\\tif (!!o.startDate){\\n\\t\\t\\t\\t\\tif (o.startDate instanceof Date)\\n\\t\\t\\t\\t\\t\\to.startDate = this._local_to_utc(this._zero_time(o.startDate));\\n\\t\\t\\t\\t\\telse\\n\\t\\t\\t\\t\\t\\to.startDate = DPGlobal.parseDate(o.startDate, format, o.language, o.assumeNearbyYear);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\telse {\\n\\t\\t\\t\\t\\to.startDate = -Infinity;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tif (o.endDate !== Infinity){\\n\\t\\t\\t\\tif (!!o.endDate){\\n\\t\\t\\t\\t\\tif (o.endDate instanceof Date)\\n\\t\\t\\t\\t\\t\\to.endDate = this._local_to_utc(this._zero_time(o.endDate));\\n\\t\\t\\t\\t\\telse\\n\\t\\t\\t\\t\\t\\to.endDate = DPGlobal.parseDate(o.endDate, format, o.language, o.assumeNearbyYear);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\telse {\\n\\t\\t\\t\\t\\to.endDate = Infinity;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\to.daysOfWeekDisabled = this._resolveDaysOfWeek(o.daysOfWeekDisabled||[]);\\n\\t\\t\\to.daysOfWeekHighlighted = this._resolveDaysOfWeek(o.daysOfWeekHighlighted||[]);\\n\\n\\t\\t\\to.datesDisabled = o.datesDisabled||[];\\n\\t\\t\\tif (!$.isArray(o.datesDisabled)) {\\n\\t\\t\\t\\to.datesDisabled = o.datesDisabled.split(',');\\n\\t\\t\\t}\\n\\t\\t\\to.datesDisabled = $.map(o.datesDisabled, function(d){\\n\\t\\t\\t\\treturn DPGlobal.parseDate(d, format, o.language, o.assumeNearbyYear);\\n\\t\\t\\t});\\n\\n\\t\\t\\tvar plc = String(o.orientation).toLowerCase().split(/\\\\s+/g),\\n\\t\\t\\t\\t_plc = o.orientation.toLowerCase();\\n\\t\\t\\tplc = $.grep(plc, function(word){\\n\\t\\t\\t\\treturn /^auto|left|right|top|bottom$/.test(word);\\n\\t\\t\\t});\\n\\t\\t\\to.orientation = {x: 'auto', y: 'auto'};\\n\\t\\t\\tif (!_plc || _plc === 'auto')\\n\\t\\t\\t\\t; // no action\\n\\t\\t\\telse if (plc.length === 1){\\n\\t\\t\\t\\tswitch (plc[0]){\\n\\t\\t\\t\\t\\tcase 'top':\\n\\t\\t\\t\\t\\tcase 'bottom':\\n\\t\\t\\t\\t\\t\\to.orientation.y = plc[0];\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\tcase 'left':\\n\\t\\t\\t\\t\\tcase 'right':\\n\\t\\t\\t\\t\\t\\to.orientation.x = plc[0];\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\telse {\\n\\t\\t\\t\\t_plc = $.grep(plc, function(word){\\n\\t\\t\\t\\t\\treturn /^left|right$/.test(word);\\n\\t\\t\\t\\t});\\n\\t\\t\\t\\to.orientation.x = _plc[0] || 'auto';\\n\\n\\t\\t\\t\\t_plc = $.grep(plc, function(word){\\n\\t\\t\\t\\t\\treturn /^top|bottom$/.test(word);\\n\\t\\t\\t\\t});\\n\\t\\t\\t\\to.orientation.y = _plc[0] || 'auto';\\n\\t\\t\\t}\\n\\t\\t\\tif (o.defaultViewDate instanceof Date || typeof o.defaultViewDate === 'string') {\\n\\t\\t\\t\\to.defaultViewDate = DPGlobal.parseDate(o.defaultViewDate, format, o.language, o.assumeNearbyYear);\\n\\t\\t\\t} else if (o.defaultViewDate) {\\n\\t\\t\\t\\tvar year = o.defaultViewDate.year || new Date().getFullYear();\\n\\t\\t\\t\\tvar month = o.defaultViewDate.month || 0;\\n\\t\\t\\t\\tvar day = o.defaultViewDate.day || 1;\\n\\t\\t\\t\\to.defaultViewDate = UTCDate(year, month, day);\\n\\t\\t\\t} else {\\n\\t\\t\\t\\to.defaultViewDate = UTCToday();\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\t_events: [],\\n\\t\\t_secondaryEvents: [],\\n\\t\\t_applyEvents: function(evs){\\n\\t\\t\\tfor (var i=0, el, ch, ev; i < evs.length; i++){\\n\\t\\t\\t\\tel = evs[i][0];\\n\\t\\t\\t\\tif (evs[i].length === 2){\\n\\t\\t\\t\\t\\tch = undefined;\\n\\t\\t\\t\\t\\tev = evs[i][1];\\n\\t\\t\\t\\t} else if (evs[i].length === 3){\\n\\t\\t\\t\\t\\tch = evs[i][1];\\n\\t\\t\\t\\t\\tev = evs[i][2];\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tel.on(ev, ch);\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\t_unapplyEvents: function(evs){\\n\\t\\t\\tfor (var i=0, el, ev, ch; i < evs.length; i++){\\n\\t\\t\\t\\tel = evs[i][0];\\n\\t\\t\\t\\tif (evs[i].length === 2){\\n\\t\\t\\t\\t\\tch = undefined;\\n\\t\\t\\t\\t\\tev = evs[i][1];\\n\\t\\t\\t\\t} else if (evs[i].length === 3){\\n\\t\\t\\t\\t\\tch = evs[i][1];\\n\\t\\t\\t\\t\\tev = evs[i][2];\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tel.off(ev, ch);\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\t_buildEvents: function(){\\n var events = {\\n keyup: $.proxy(function(e){\\n if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1)\\n this.update();\\n }, this),\\n keydown: $.proxy(this.keydown, this),\\n paste: $.proxy(this.paste, this)\\n };\\n\\n if (this.o.showOnFocus === true) {\\n events.focus = $.proxy(this.show, this);\\n }\\n\\n if (this.isInput) { // single input\\n this._events = [\\n [this.element, events]\\n ];\\n }\\n // component: input + button\\n else if (this.component && this.inputField.length) {\\n this._events = [\\n // For components that are not readonly, allow keyboard nav\\n [this.inputField, events],\\n [this.component, {\\n click: $.proxy(this.show, this)\\n }]\\n ];\\n }\\n\\t\\t\\telse {\\n\\t\\t\\t\\tthis._events = [\\n\\t\\t\\t\\t\\t[this.element, {\\n\\t\\t\\t\\t\\t\\tclick: $.proxy(this.show, this),\\n\\t\\t\\t\\t\\t\\tkeydown: $.proxy(this.keydown, this)\\n\\t\\t\\t\\t\\t}]\\n\\t\\t\\t\\t];\\n\\t\\t\\t}\\n\\t\\t\\tthis._events.push(\\n\\t\\t\\t\\t// Component: listen for blur on element descendants\\n\\t\\t\\t\\t[this.element, '*', {\\n\\t\\t\\t\\t\\tblur: $.proxy(function(e){\\n\\t\\t\\t\\t\\t\\tthis._focused_from = e.target;\\n\\t\\t\\t\\t\\t}, this)\\n\\t\\t\\t\\t}],\\n\\t\\t\\t\\t// Input: listen for blur on element\\n\\t\\t\\t\\t[this.element, {\\n\\t\\t\\t\\t\\tblur: $.proxy(function(e){\\n\\t\\t\\t\\t\\t\\tthis._focused_from = e.target;\\n\\t\\t\\t\\t\\t}, this)\\n\\t\\t\\t\\t}]\\n\\t\\t\\t);\\n\\n\\t\\t\\tif (this.o.immediateUpdates) {\\n\\t\\t\\t\\t// Trigger input updates immediately on changed year/month\\n\\t\\t\\t\\tthis._events.push([this.element, {\\n\\t\\t\\t\\t\\t'changeYear changeMonth': $.proxy(function(e){\\n\\t\\t\\t\\t\\t\\tthis.update(e.date);\\n\\t\\t\\t\\t\\t}, this)\\n\\t\\t\\t\\t}]);\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis._secondaryEvents = [\\n\\t\\t\\t\\t[this.picker, {\\n\\t\\t\\t\\t\\tclick: $.proxy(this.click, this)\\n\\t\\t\\t\\t}],\\n\\t\\t\\t\\t[this.picker, '.prev, .next', {\\n\\t\\t\\t\\t\\tclick: $.proxy(this.navArrowsClick, this)\\n\\t\\t\\t\\t}],\\n\\t\\t\\t\\t[$(window), {\\n\\t\\t\\t\\t\\tresize: $.proxy(this.place, this)\\n\\t\\t\\t\\t}],\\n\\t\\t\\t\\t[$(document), {\\n\\t\\t\\t\\t\\t'mousedown touchstart': $.proxy(function(e){\\n\\t\\t\\t\\t\\t\\t// Clicked outside the datepicker, hide it\\n\\t\\t\\t\\t\\t\\tif (!(\\n\\t\\t\\t\\t\\t\\t\\tthis.element.is(e.target) ||\\n\\t\\t\\t\\t\\t\\t\\tthis.element.find(e.target).length ||\\n\\t\\t\\t\\t\\t\\t\\tthis.picker.is(e.target) ||\\n\\t\\t\\t\\t\\t\\t\\tthis.picker.find(e.target).length ||\\n\\t\\t\\t\\t\\t\\t\\tthis.isInline\\n\\t\\t\\t\\t\\t\\t)){\\n\\t\\t\\t\\t\\t\\t\\tthis.hide();\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}, this)\\n\\t\\t\\t\\t}]\\n\\t\\t\\t];\\n\\t\\t},\\n\\t\\t_attachEvents: function(){\\n\\t\\t\\tthis._detachEvents();\\n\\t\\t\\tthis._applyEvents(this._events);\\n\\t\\t},\\n\\t\\t_detachEvents: function(){\\n\\t\\t\\tthis._unapplyEvents(this._events);\\n\\t\\t},\\n\\t\\t_attachSecondaryEvents: function(){\\n\\t\\t\\tthis._detachSecondaryEvents();\\n\\t\\t\\tthis._applyEvents(this._secondaryEvents);\\n\\t\\t},\\n\\t\\t_detachSecondaryEvents: function(){\\n\\t\\t\\tthis._unapplyEvents(this._secondaryEvents);\\n\\t\\t},\\n\\t\\t_trigger: function(event, altdate){\\n\\t\\t\\tvar date = altdate || this.dates.get(-1),\\n\\t\\t\\t\\tlocal_date = this._utc_to_local(date);\\n\\n\\t\\t\\tthis.element.trigger({\\n\\t\\t\\t\\ttype: event,\\n\\t\\t\\t\\tdate: local_date,\\n\\t\\t\\t\\tviewMode: this.viewMode,\\n\\t\\t\\t\\tdates: $.map(this.dates, this._utc_to_local),\\n\\t\\t\\t\\tformat: $.proxy(function(ix, format){\\n\\t\\t\\t\\t\\tif (arguments.length === 0){\\n\\t\\t\\t\\t\\t\\tix = this.dates.length - 1;\\n\\t\\t\\t\\t\\t\\tformat = this.o.format;\\n\\t\\t\\t\\t\\t} else if (typeof ix === 'string'){\\n\\t\\t\\t\\t\\t\\tformat = ix;\\n\\t\\t\\t\\t\\t\\tix = this.dates.length - 1;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tformat = format || this.o.format;\\n\\t\\t\\t\\t\\tvar date = this.dates.get(ix);\\n\\t\\t\\t\\t\\treturn DPGlobal.formatDate(date, format, this.o.language);\\n\\t\\t\\t\\t}, this)\\n\\t\\t\\t});\\n\\t\\t},\\n\\n\\t\\tshow: function(){\\n\\t\\t\\tif (this.inputField.prop('disabled') || (this.inputField.prop('readonly') && this.o.enableOnReadonly === false))\\n\\t\\t\\t\\treturn;\\n\\t\\t\\tif (!this.isInline)\\n\\t\\t\\t\\tthis.picker.appendTo(this.o.container);\\n\\t\\t\\tthis.place();\\n\\t\\t\\tthis.picker.show();\\n\\t\\t\\tthis._attachSecondaryEvents();\\n\\t\\t\\tthis._trigger('show');\\n\\t\\t\\tif ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard) {\\n\\t\\t\\t\\t$(this.element).blur();\\n\\t\\t\\t}\\n\\t\\t\\treturn this;\\n\\t\\t},\\n\\n\\t\\thide: function(){\\n\\t\\t\\tif (this.isInline || !this.picker.is(':visible'))\\n\\t\\t\\t\\treturn this;\\n\\t\\t\\tthis.focusDate = null;\\n\\t\\t\\tthis.picker.hide().detach();\\n\\t\\t\\tthis._detachSecondaryEvents();\\n\\t\\t\\tthis.setViewMode(this.o.startView);\\n\\n\\t\\t\\tif (this.o.forceParse && this.inputField.val())\\n\\t\\t\\t\\tthis.setValue();\\n\\t\\t\\tthis._trigger('hide');\\n\\t\\t\\treturn this;\\n\\t\\t},\\n\\n\\t\\tdestroy: function(){\\n\\t\\t\\tthis.hide();\\n\\t\\t\\tthis._detachEvents();\\n\\t\\t\\tthis._detachSecondaryEvents();\\n\\t\\t\\tthis.picker.remove();\\n\\t\\t\\tdelete this.element.data().datepicker;\\n\\t\\t\\tif (!this.isInput){\\n\\t\\t\\t\\tdelete this.element.data().date;\\n\\t\\t\\t}\\n\\t\\t\\treturn this;\\n\\t\\t},\\n\\n\\t\\tpaste: function(e){\\n\\t\\t\\tvar dateString;\\n\\t\\t\\tif (e.originalEvent.clipboardData && e.originalEvent.clipboardData.types\\n\\t\\t\\t\\t&& $.inArray('text/plain', e.originalEvent.clipboardData.types) !== -1) {\\n\\t\\t\\t\\tdateString = e.originalEvent.clipboardData.getData('text/plain');\\n\\t\\t\\t} else if (window.clipboardData) {\\n\\t\\t\\t\\tdateString = window.clipboardData.getData('Text');\\n\\t\\t\\t} else {\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\tthis.setDate(dateString);\\n\\t\\t\\tthis.update();\\n\\t\\t\\te.preventDefault();\\n\\t\\t},\\n\\n\\t\\t_utc_to_local: function(utc){\\n\\t\\t\\tif (!utc) {\\n\\t\\t\\t\\treturn utc;\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar local = new Date(utc.getTime() + (utc.getTimezoneOffset() * 60000));\\n\\n\\t\\t\\tif (local.getTimezoneOffset() !== utc.getTimezoneOffset()) {\\n\\t\\t\\t\\tlocal = new Date(utc.getTime() + (local.getTimezoneOffset() * 60000));\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn local;\\n\\t\\t},\\n\\t\\t_local_to_utc: function(local){\\n\\t\\t\\treturn local && new Date(local.getTime() - (local.getTimezoneOffset()*60000));\\n\\t\\t},\\n\\t\\t_zero_time: function(local){\\n\\t\\t\\treturn local && new Date(local.getFullYear(), local.getMonth(), local.getDate());\\n\\t\\t},\\n\\t\\t_zero_utc_time: function(utc){\\n\\t\\t\\treturn utc && UTCDate(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate());\\n\\t\\t},\\n\\n\\t\\tgetDates: function(){\\n\\t\\t\\treturn $.map(this.dates, this._utc_to_local);\\n\\t\\t},\\n\\n\\t\\tgetUTCDates: function(){\\n\\t\\t\\treturn $.map(this.dates, function(d){\\n\\t\\t\\t\\treturn new Date(d);\\n\\t\\t\\t});\\n\\t\\t},\\n\\n\\t\\tgetDate: function(){\\n\\t\\t\\treturn this._utc_to_local(this.getUTCDate());\\n\\t\\t},\\n\\n\\t\\tgetUTCDate: function(){\\n\\t\\t\\tvar selected_date = this.dates.get(-1);\\n\\t\\t\\tif (selected_date !== undefined) {\\n\\t\\t\\t\\treturn new Date(selected_date);\\n\\t\\t\\t} else {\\n\\t\\t\\t\\treturn null;\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\tclearDates: function(){\\n\\t\\t\\tthis.inputField.val('');\\n\\t\\t\\tthis.update();\\n\\t\\t\\tthis._trigger('changeDate');\\n\\n\\t\\t\\tif (this.o.autoclose) {\\n\\t\\t\\t\\tthis.hide();\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\tsetDates: function(){\\n\\t\\t\\tvar args = $.isArray(arguments[0]) ? arguments[0] : arguments;\\n\\t\\t\\tthis.update.apply(this, args);\\n\\t\\t\\tthis._trigger('changeDate');\\n\\t\\t\\tthis.setValue();\\n\\t\\t\\treturn this;\\n\\t\\t},\\n\\n\\t\\tsetUTCDates: function(){\\n\\t\\t\\tvar args = $.isArray(arguments[0]) ? arguments[0] : arguments;\\n\\t\\t\\tthis.setDates.apply(this, $.map(args, this._utc_to_local));\\n\\t\\t\\treturn this;\\n\\t\\t},\\n\\n\\t\\tsetDate: alias('setDates'),\\n\\t\\tsetUTCDate: alias('setUTCDates'),\\n\\t\\tremove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead'),\\n\\n\\t\\tsetValue: function(){\\n\\t\\t\\tvar formatted = this.getFormattedDate();\\n\\t\\t\\tthis.inputField.val(formatted);\\n\\t\\t\\treturn this;\\n\\t\\t},\\n\\n\\t\\tgetFormattedDate: function(format){\\n\\t\\t\\tif (format === undefined)\\n\\t\\t\\t\\tformat = this.o.format;\\n\\n\\t\\t\\tvar lang = this.o.language;\\n\\t\\t\\treturn $.map(this.dates, function(d){\\n\\t\\t\\t\\treturn DPGlobal.formatDate(d, format, lang);\\n\\t\\t\\t}).join(this.o.multidateSeparator);\\n\\t\\t},\\n\\n\\t\\tgetStartDate: function(){\\n\\t\\t\\treturn this.o.startDate;\\n\\t\\t},\\n\\n\\t\\tsetStartDate: function(startDate){\\n\\t\\t\\tthis._process_options({startDate: startDate});\\n\\t\\t\\tthis.update();\\n\\t\\t\\tthis.updateNavArrows();\\n\\t\\t\\treturn this;\\n\\t\\t},\\n\\n\\t\\tgetEndDate: function(){\\n\\t\\t\\treturn this.o.endDate;\\n\\t\\t},\\n\\n\\t\\tsetEndDate: function(endDate){\\n\\t\\t\\tthis._process_options({endDate: endDate});\\n\\t\\t\\tthis.update();\\n\\t\\t\\tthis.updateNavArrows();\\n\\t\\t\\treturn this;\\n\\t\\t},\\n\\n\\t\\tsetDaysOfWeekDisabled: function(daysOfWeekDisabled){\\n\\t\\t\\tthis._process_options({daysOfWeekDisabled: daysOfWeekDisabled});\\n\\t\\t\\tthis.update();\\n\\t\\t\\treturn this;\\n\\t\\t},\\n\\n\\t\\tsetDaysOfWeekHighlighted: function(daysOfWeekHighlighted){\\n\\t\\t\\tthis._process_options({daysOfWeekHighlighted: daysOfWeekHighlighted});\\n\\t\\t\\tthis.update();\\n\\t\\t\\treturn this;\\n\\t\\t},\\n\\n\\t\\tsetDatesDisabled: function(datesDisabled){\\n\\t\\t\\tthis._process_options({datesDisabled: datesDisabled});\\n\\t\\t\\tthis.update();\\n\\t\\t\\treturn this;\\n\\t\\t},\\n\\n\\t\\tplace: function(){\\n\\t\\t\\tif (this.isInline)\\n\\t\\t\\t\\treturn this;\\n\\t\\t\\tvar calendarWidth = this.picker.outerWidth(),\\n\\t\\t\\t\\tcalendarHeight = this.picker.outerHeight(),\\n\\t\\t\\t\\tvisualPadding = 10,\\n\\t\\t\\t\\tcontainer = $(this.o.container),\\n\\t\\t\\t\\twindowWidth = container.width(),\\n\\t\\t\\t\\tscrollTop = this.o.container === 'body' ? $(document).scrollTop() : container.scrollTop(),\\n\\t\\t\\t\\tappendOffset = container.offset();\\n\\n\\t\\t\\tvar parentsZindex = [0];\\n\\t\\t\\tthis.element.parents().each(function(){\\n\\t\\t\\t\\tvar itemZIndex = $(this).css('z-index');\\n\\t\\t\\t\\tif (itemZIndex !== 'auto' && Number(itemZIndex) !== 0) parentsZindex.push(Number(itemZIndex));\\n\\t\\t\\t});\\n\\t\\t\\tvar zIndex = Math.max.apply(Math, parentsZindex) + this.o.zIndexOffset;\\n\\t\\t\\tvar offset = this.component ? this.component.parent().offset() : this.element.offset();\\n\\t\\t\\tvar height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);\\n\\t\\t\\tvar width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);\\n\\t\\t\\tvar left = offset.left - appendOffset.left;\\n\\t\\t\\tvar top = offset.top - appendOffset.top;\\n\\n\\t\\t\\tif (this.o.container !== 'body') {\\n\\t\\t\\t\\ttop += scrollTop;\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.picker.removeClass(\\n\\t\\t\\t\\t'datepicker-orient-top datepicker-orient-bottom '+\\n\\t\\t\\t\\t'datepicker-orient-right datepicker-orient-left'\\n\\t\\t\\t);\\n\\n\\t\\t\\tif (this.o.orientation.x !== 'auto'){\\n\\t\\t\\t\\tthis.picker.addClass('datepicker-orient-' + this.o.orientation.x);\\n\\t\\t\\t\\tif (this.o.orientation.x === 'right')\\n\\t\\t\\t\\t\\tleft -= calendarWidth - width;\\n\\t\\t\\t}\\n\\t\\t\\t// auto x orientation is best-placement: if it crosses a window\\n\\t\\t\\t// edge, fudge it sideways\\n\\t\\t\\telse {\\n\\t\\t\\t\\tif (offset.left < 0) {\\n\\t\\t\\t\\t\\t// component is outside the window on the left side. Move it into visible range\\n\\t\\t\\t\\t\\tthis.picker.addClass('datepicker-orient-left');\\n\\t\\t\\t\\t\\tleft -= offset.left - visualPadding;\\n\\t\\t\\t\\t} else if (left + calendarWidth > windowWidth) {\\n\\t\\t\\t\\t\\t// the calendar passes the widow right edge. Align it to component right side\\n\\t\\t\\t\\t\\tthis.picker.addClass('datepicker-orient-right');\\n\\t\\t\\t\\t\\tleft += width - calendarWidth;\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tif (this.o.rtl) {\\n\\t\\t\\t\\t\\t\\t// Default to right\\n\\t\\t\\t\\t\\t\\tthis.picker.addClass('datepicker-orient-right');\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t// Default to left\\n\\t\\t\\t\\t\\t\\tthis.picker.addClass('datepicker-orient-left');\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// auto y orientation is best-situation: top or bottom, no fudging,\\n\\t\\t\\t// decision based on which shows more of the calendar\\n\\t\\t\\tvar yorient = this.o.orientation.y,\\n\\t\\t\\t\\ttop_overflow;\\n\\t\\t\\tif (yorient === 'auto'){\\n\\t\\t\\t\\ttop_overflow = -scrollTop + top - calendarHeight;\\n\\t\\t\\t\\tyorient = top_overflow < 0 ? 'bottom' : 'top';\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.picker.addClass('datepicker-orient-' + yorient);\\n\\t\\t\\tif (yorient === 'top')\\n\\t\\t\\t\\ttop -= calendarHeight + parseInt(this.picker.css('padding-top'));\\n\\t\\t\\telse\\n\\t\\t\\t\\ttop += height;\\n\\n\\t\\t\\tif (this.o.rtl) {\\n\\t\\t\\t\\tvar right = windowWidth - (left + width);\\n\\t\\t\\t\\tthis.picker.css({\\n\\t\\t\\t\\t\\ttop: top,\\n\\t\\t\\t\\t\\tright: right,\\n\\t\\t\\t\\t\\tzIndex: zIndex\\n\\t\\t\\t\\t});\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tthis.picker.css({\\n\\t\\t\\t\\t\\ttop: top,\\n\\t\\t\\t\\t\\tleft: left,\\n\\t\\t\\t\\t\\tzIndex: zIndex\\n\\t\\t\\t\\t});\\n\\t\\t\\t}\\n\\t\\t\\treturn this;\\n\\t\\t},\\n\\n\\t\\t_allow_update: true,\\n\\t\\tupdate: function(){\\n\\t\\t\\tif (!this._allow_update)\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\tvar oldDates = this.dates.copy(),\\n\\t\\t\\t\\tdates = [],\\n\\t\\t\\t\\tfromArgs = false;\\n\\t\\t\\tif (arguments.length){\\n\\t\\t\\t\\t$.each(arguments, $.proxy(function(i, date){\\n\\t\\t\\t\\t\\tif (date instanceof Date)\\n\\t\\t\\t\\t\\t\\tdate = this._local_to_utc(date);\\n\\t\\t\\t\\t\\tdates.push(date);\\n\\t\\t\\t\\t}, this));\\n\\t\\t\\t\\tfromArgs = true;\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tdates = this.isInput\\n\\t\\t\\t\\t\\t\\t? this.element.val()\\n\\t\\t\\t\\t\\t\\t: this.element.data('date') || this.inputField.val();\\n\\t\\t\\t\\tif (dates && this.o.multidate)\\n\\t\\t\\t\\t\\tdates = dates.split(this.o.multidateSeparator);\\n\\t\\t\\t\\telse\\n\\t\\t\\t\\t\\tdates = [dates];\\n\\t\\t\\t\\tdelete this.element.data().date;\\n\\t\\t\\t}\\n\\n\\t\\t\\tdates = $.map(dates, $.proxy(function(date){\\n\\t\\t\\t\\treturn DPGlobal.parseDate(date, this.o.format, this.o.language, this.o.assumeNearbyYear);\\n\\t\\t\\t}, this));\\n\\t\\t\\tdates = $.grep(dates, $.proxy(function(date){\\n\\t\\t\\t\\treturn (\\n\\t\\t\\t\\t\\t!this.dateWithinRange(date) ||\\n\\t\\t\\t\\t\\t!date\\n\\t\\t\\t\\t);\\n\\t\\t\\t}, this), true);\\n\\t\\t\\tthis.dates.replace(dates);\\n\\n\\t\\t\\tif (this.o.updateViewDate) {\\n\\t\\t\\t\\tif (this.dates.length)\\n\\t\\t\\t\\t\\tthis.viewDate = new Date(this.dates.get(-1));\\n\\t\\t\\t\\telse if (this.viewDate < this.o.startDate)\\n\\t\\t\\t\\t\\tthis.viewDate = new Date(this.o.startDate);\\n\\t\\t\\t\\telse if (this.viewDate > this.o.endDate)\\n\\t\\t\\t\\t\\tthis.viewDate = new Date(this.o.endDate);\\n\\t\\t\\t\\telse\\n\\t\\t\\t\\t\\tthis.viewDate = this.o.defaultViewDate;\\n\\t\\t\\t}\\n\\n\\t\\t\\tif (fromArgs){\\n\\t\\t\\t\\t// setting date by clicking\\n\\t\\t\\t\\tthis.setValue();\\n\\t\\t\\t\\tthis.element.change();\\n\\t\\t\\t}\\n\\t\\t\\telse if (this.dates.length){\\n\\t\\t\\t\\t// setting date by typing\\n\\t\\t\\t\\tif (String(oldDates) !== String(this.dates) && fromArgs) {\\n\\t\\t\\t\\t\\tthis._trigger('changeDate');\\n\\t\\t\\t\\t\\tthis.element.change();\\n\\t\\t\\t\\t}\\n }\\n\\t\\t\\tif (!this.dates.length && oldDates.length) {\\n\\t\\t\\t\\tthis._trigger('clearDate');\\n\\t\\t\\t\\tthis.element.change();\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.fill();\\n\\t\\t\\treturn this;\\n\\t\\t},\\n\\n\\t\\tfillDow: function(){\\n\\t\\t\\tvar dowCnt = this.o.weekStart,\\n\\t\\t\\t\\thtml = '';\\n\\t\\t\\tif (this.o.calendarWeeks){\\n\\t\\t\\t\\thtml += ' ';\\n\\t\\t\\t}\\n\\t\\t\\twhile (dowCnt < this.o.weekStart + 7){\\n\\t\\t\\t\\thtml += '';\\n\\t\\t\\t}\\n\\t\\t\\thtml += '';\\n\\t\\t\\tthis.picker.find('.datepicker-days thead').append(html);\\n\\t\\t},\\n\\n\\t\\tfillMonths: function(){\\n\\t\\t\\tvar localDate = this._utc_to_local(this.viewDate);\\n\\t\\t\\tvar html = '';\\n\\t\\t\\tvar focused;\\n\\t\\t\\tfor (var i = 0; i < 12; i++){\\n\\t\\t\\t\\tfocused = localDate && localDate.getMonth() === i ? ' focused' : '';\\n\\t\\t\\t\\thtml += '' + dates[this.o.language].monthsShort[i] + '';\\n\\t\\t\\t}\\n\\t\\t\\tthis.picker.find('.datepicker-months td').html(html);\\n\\t\\t},\\n\\n\\t\\tsetRange: function(range){\\n\\t\\t\\tif (!range || !range.length)\\n\\t\\t\\t\\tdelete this.range;\\n\\t\\t\\telse\\n\\t\\t\\t\\tthis.range = $.map(range, function(d){\\n\\t\\t\\t\\t\\treturn d.valueOf();\\n\\t\\t\\t\\t});\\n\\t\\t\\tthis.fill();\\n\\t\\t},\\n\\n\\t\\tgetClassNames: function(date){\\n\\t\\t\\tvar cls = [],\\n\\t\\t\\t\\tyear = this.viewDate.getUTCFullYear(),\\n\\t\\t\\t\\tmonth = this.viewDate.getUTCMonth(),\\n\\t\\t\\t\\ttoday = UTCToday();\\n\\t\\t\\tif (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){\\n\\t\\t\\t\\tcls.push('old');\\n\\t\\t\\t} else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){\\n\\t\\t\\t\\tcls.push('new');\\n\\t\\t\\t}\\n\\t\\t\\tif (this.focusDate && date.valueOf() === this.focusDate.valueOf())\\n\\t\\t\\t\\tcls.push('focused');\\n\\t\\t\\t// Compare internal UTC date with UTC today, not local today\\n\\t\\t\\tif (this.o.todayHighlight && isUTCEquals(date, today)) {\\n\\t\\t\\t\\tcls.push('today');\\n\\t\\t\\t}\\n\\t\\t\\tif (this.dates.contains(date) !== -1)\\n\\t\\t\\t\\tcls.push('active');\\n\\t\\t\\tif (!this.dateWithinRange(date)){\\n\\t\\t\\t\\tcls.push('disabled');\\n\\t\\t\\t}\\n\\t\\t\\tif (this.dateIsDisabled(date)){\\n\\t\\t\\t\\tcls.push('disabled', 'disabled-date');\\n\\t\\t\\t}\\n\\t\\t\\tif ($.inArray(date.getUTCDay(), this.o.daysOfWeekHighlighted) !== -1){\\n\\t\\t\\t\\tcls.push('highlighted');\\n\\t\\t\\t}\\n\\n\\t\\t\\tif (this.range){\\n\\t\\t\\t\\tif (date > this.range[0] && date < this.range[this.range.length-1]){\\n\\t\\t\\t\\t\\tcls.push('range');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ($.inArray(date.valueOf(), this.range) !== -1){\\n\\t\\t\\t\\t\\tcls.push('selected');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (date.valueOf() === this.range[0]){\\n cls.push('range-start');\\n }\\n if (date.valueOf() === this.range[this.range.length-1]){\\n cls.push('range-end');\\n }\\n\\t\\t\\t}\\n\\t\\t\\treturn cls;\\n\\t\\t},\\n\\n\\t\\t_fill_yearsView: function(selector, cssClass, factor, year, startYear, endYear, beforeFn){\\n\\t\\t\\tvar html = '';\\n\\t\\t\\tvar step = factor / 10;\\n\\t\\t\\tvar view = this.picker.find(selector);\\n\\t\\t\\tvar startVal = Math.floor(year / factor) * factor;\\n\\t\\t\\tvar endVal = startVal + step * 9;\\n\\t\\t\\tvar focusedVal = Math.floor(this.viewDate.getFullYear() / step) * step;\\n\\t\\t\\tvar selected = $.map(this.dates, function(d){\\n\\t\\t\\t\\treturn Math.floor(d.getUTCFullYear() / step) * step;\\n\\t\\t\\t});\\n\\n\\t\\t\\tvar classes, tooltip, before;\\n\\t\\t\\tfor (var currVal = startVal - step; currVal <= endVal + step; currVal += step) {\\n\\t\\t\\t\\tclasses = [cssClass];\\n\\t\\t\\t\\ttooltip = null;\\n\\n\\t\\t\\t\\tif (currVal === startVal - step) {\\n\\t\\t\\t\\t\\tclasses.push('old');\\n\\t\\t\\t\\t} else if (currVal === endVal + step) {\\n\\t\\t\\t\\t\\tclasses.push('new');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ($.inArray(currVal, selected) !== -1) {\\n\\t\\t\\t\\t\\tclasses.push('active');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (currVal < startYear || currVal > endYear) {\\n\\t\\t\\t\\t\\tclasses.push('disabled');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (currVal === focusedVal) {\\n\\t\\t\\t\\t\\tclasses.push('focused');\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif (beforeFn !== $.noop) {\\n\\t\\t\\t\\t\\tbefore = beforeFn(new Date(currVal, 0, 1));\\n\\t\\t\\t\\t\\tif (before === undefined) {\\n\\t\\t\\t\\t\\t\\tbefore = {};\\n\\t\\t\\t\\t\\t} else if (typeof before === 'boolean') {\\n\\t\\t\\t\\t\\t\\tbefore = {enabled: before};\\n\\t\\t\\t\\t\\t} else if (typeof before === 'string') {\\n\\t\\t\\t\\t\\t\\tbefore = {classes: before};\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tif (before.enabled === false) {\\n\\t\\t\\t\\t\\t\\tclasses.push('disabled');\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tif (before.classes) {\\n\\t\\t\\t\\t\\t\\tclasses = classes.concat(before.classes.split(/\\\\s+/));\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tif (before.tooltip) {\\n\\t\\t\\t\\t\\t\\ttooltip = before.tooltip;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\thtml += '' + currVal + '';\\n\\t\\t\\t}\\n\\n\\t\\t\\tview.find('.datepicker-switch').text(startVal + '-' + endVal);\\n\\t\\t\\tview.find('td').html(html);\\n\\t\\t},\\n\\n\\t\\tfill: function(){\\n\\t\\t\\tvar d = new Date(this.viewDate),\\n\\t\\t\\t\\tyear = d.getUTCFullYear(),\\n\\t\\t\\t\\tmonth = d.getUTCMonth(),\\n\\t\\t\\t\\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\\n\\t\\t\\t\\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\\n\\t\\t\\t\\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\\n\\t\\t\\t\\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\\n\\t\\t\\t\\ttodaytxt = dates[this.o.language].today || dates['en'].today || '',\\n\\t\\t\\t\\tcleartxt = dates[this.o.language].clear || dates['en'].clear || '',\\n\\t\\t\\t\\ttitleFormat = dates[this.o.language].titleFormat || dates['en'].titleFormat,\\n\\t\\t\\t\\ttooltip,\\n\\t\\t\\t\\tbefore;\\n\\t\\t\\tif (isNaN(year) || isNaN(month))\\n\\t\\t\\t\\treturn;\\n\\t\\t\\tthis.picker.find('.datepicker-days .datepicker-switch')\\n\\t\\t\\t\\t\\t\\t.text(DPGlobal.formatDate(d, titleFormat, this.o.language));\\n\\t\\t\\tthis.picker.find('tfoot .today')\\n\\t\\t\\t\\t\\t\\t.text(todaytxt)\\n\\t\\t\\t\\t\\t\\t.toggle(this.o.todayBtn !== false);\\n\\t\\t\\tthis.picker.find('tfoot .clear')\\n\\t\\t\\t\\t\\t\\t.text(cleartxt)\\n\\t\\t\\t\\t\\t\\t.toggle(this.o.clearBtn !== false);\\n\\t\\t\\tthis.picker.find('thead .datepicker-title')\\n\\t\\t\\t\\t\\t\\t.text(this.o.title)\\n\\t\\t\\t\\t\\t\\t.toggle(this.o.title !== '');\\n\\t\\t\\tthis.updateNavArrows();\\n\\t\\t\\tthis.fillMonths();\\n\\t\\t\\tvar prevMonth = UTCDate(year, month, 0),\\n\\t\\t\\t\\tday = prevMonth.getUTCDate();\\n\\t\\t\\tprevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);\\n\\t\\t\\tvar nextMonth = new Date(prevMonth);\\n\\t\\t\\tif (prevMonth.getUTCFullYear() < 100){\\n nextMonth.setUTCFullYear(prevMonth.getUTCFullYear());\\n }\\n\\t\\t\\tnextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\\n\\t\\t\\tnextMonth = nextMonth.valueOf();\\n\\t\\t\\tvar html = [];\\n\\t\\t\\tvar weekDay, clsName;\\n\\t\\t\\twhile (prevMonth.valueOf() < nextMonth){\\n\\t\\t\\t\\tweekDay = prevMonth.getUTCDay();\\n\\t\\t\\t\\tif (weekDay === this.o.weekStart){\\n\\t\\t\\t\\t\\thtml.push('');\\n\\t\\t\\t\\t\\tif (this.o.calendarWeeks){\\n\\t\\t\\t\\t\\t\\t// ISO 8601: First week contains first thursday.\\n\\t\\t\\t\\t\\t\\t// ISO also states week starts on Monday, but we can be more abstract here.\\n\\t\\t\\t\\t\\t\\tvar\\n\\t\\t\\t\\t\\t\\t\\t// Start of current week: based on weekstart/current date\\n\\t\\t\\t\\t\\t\\t\\tws = new Date(+prevMonth + (this.o.weekStart - weekDay - 7) % 7 * 864e5),\\n\\t\\t\\t\\t\\t\\t\\t// Thursday of this week\\n\\t\\t\\t\\t\\t\\t\\tth = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),\\n\\t\\t\\t\\t\\t\\t\\t// First Thursday of year, year from thursday\\n\\t\\t\\t\\t\\t\\t\\tyth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay()) % 7 * 864e5),\\n\\t\\t\\t\\t\\t\\t\\t// Calendar week: ms between thursdays, div ms per day, div 7 days\\n\\t\\t\\t\\t\\t\\t\\tcalWeek = (th - yth) / 864e5 / 7 + 1;\\n\\t\\t\\t\\t\\t\\thtml.push(''+ calWeek +'');\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tclsName = this.getClassNames(prevMonth);\\n\\t\\t\\t\\tclsName.push('day');\\n\\n\\t\\t\\t\\tif (this.o.beforeShowDay !== $.noop){\\n\\t\\t\\t\\t\\tbefore = this.o.beforeShowDay(this._utc_to_local(prevMonth));\\n\\t\\t\\t\\t\\tif (before === undefined)\\n\\t\\t\\t\\t\\t\\tbefore = {};\\n\\t\\t\\t\\t\\telse if (typeof before === 'boolean')\\n\\t\\t\\t\\t\\t\\tbefore = {enabled: before};\\n\\t\\t\\t\\t\\telse if (typeof before === 'string')\\n\\t\\t\\t\\t\\t\\tbefore = {classes: before};\\n\\t\\t\\t\\t\\tif (before.enabled === false)\\n\\t\\t\\t\\t\\t\\tclsName.push('disabled');\\n\\t\\t\\t\\t\\tif (before.classes)\\n\\t\\t\\t\\t\\t\\tclsName = clsName.concat(before.classes.split(/\\\\s+/));\\n\\t\\t\\t\\t\\tif (before.tooltip)\\n\\t\\t\\t\\t\\t\\ttooltip = before.tooltip;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t//Check if uniqueSort exists (supported by jquery >=1.12 and >=2.2)\\n\\t\\t\\t\\t//Fallback to unique function for older jquery versions\\n\\t\\t\\t\\tif ($.isFunction($.uniqueSort)) {\\n\\t\\t\\t\\t\\tclsName = $.uniqueSort(clsName);\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tclsName = $.unique(clsName);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\thtml.push('' + prevMonth.getUTCDate() + '');\\n\\t\\t\\t\\ttooltip = null;\\n\\t\\t\\t\\tif (weekDay === this.o.weekEnd){\\n\\t\\t\\t\\t\\thtml.push('');\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tprevMonth.setUTCDate(prevMonth.getUTCDate() + 1);\\n\\t\\t\\t}\\n\\t\\t\\tthis.picker.find('.datepicker-days tbody').html(html.join(''));\\n\\n\\t\\t\\tvar monthsTitle = dates[this.o.language].monthsTitle || dates['en'].monthsTitle || 'Months';\\n\\t\\t\\tvar months = this.picker.find('.datepicker-months')\\n\\t\\t\\t\\t\\t\\t.find('.datepicker-switch')\\n\\t\\t\\t\\t\\t\\t\\t.text(this.o.maxViewMode < 2 ? monthsTitle : year)\\n\\t\\t\\t\\t\\t\\t\\t.end()\\n\\t\\t\\t\\t\\t\\t.find('tbody span').removeClass('active');\\n\\n\\t\\t\\t$.each(this.dates, function(i, d){\\n\\t\\t\\t\\tif (d.getUTCFullYear() === year)\\n\\t\\t\\t\\t\\tmonths.eq(d.getUTCMonth()).addClass('active');\\n\\t\\t\\t});\\n\\n\\t\\t\\tif (year < startYear || year > endYear){\\n\\t\\t\\t\\tmonths.addClass('disabled');\\n\\t\\t\\t}\\n\\t\\t\\tif (year === startYear){\\n\\t\\t\\t\\tmonths.slice(0, startMonth).addClass('disabled');\\n\\t\\t\\t}\\n\\t\\t\\tif (year === endYear){\\n\\t\\t\\t\\tmonths.slice(endMonth+1).addClass('disabled');\\n\\t\\t\\t}\\n\\n\\t\\t\\tif (this.o.beforeShowMonth !== $.noop){\\n\\t\\t\\t\\tvar that = this;\\n\\t\\t\\t\\t$.each(months, function(i, month){\\n var moDate = new Date(year, i, 1);\\n var before = that.o.beforeShowMonth(moDate);\\n\\t\\t\\t\\t\\tif (before === undefined)\\n\\t\\t\\t\\t\\t\\tbefore = {};\\n\\t\\t\\t\\t\\telse if (typeof before === 'boolean')\\n\\t\\t\\t\\t\\t\\tbefore = {enabled: before};\\n\\t\\t\\t\\t\\telse if (typeof before === 'string')\\n\\t\\t\\t\\t\\t\\tbefore = {classes: before};\\n\\t\\t\\t\\t\\tif (before.enabled === false && !$(month).hasClass('disabled'))\\n\\t\\t\\t\\t\\t $(month).addClass('disabled');\\n\\t\\t\\t\\t\\tif (before.classes)\\n\\t\\t\\t\\t\\t $(month).addClass(before.classes);\\n\\t\\t\\t\\t\\tif (before.tooltip)\\n\\t\\t\\t\\t\\t $(month).prop('title', before.tooltip);\\n\\t\\t\\t\\t});\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Generating decade/years picker\\n\\t\\t\\tthis._fill_yearsView(\\n\\t\\t\\t\\t'.datepicker-years',\\n\\t\\t\\t\\t'year',\\n\\t\\t\\t\\t10,\\n\\t\\t\\t\\tyear,\\n\\t\\t\\t\\tstartYear,\\n\\t\\t\\t\\tendYear,\\n\\t\\t\\t\\tthis.o.beforeShowYear\\n\\t\\t\\t);\\n\\n\\t\\t\\t// Generating century/decades picker\\n\\t\\t\\tthis._fill_yearsView(\\n\\t\\t\\t\\t'.datepicker-decades',\\n\\t\\t\\t\\t'decade',\\n\\t\\t\\t\\t100,\\n\\t\\t\\t\\tyear,\\n\\t\\t\\t\\tstartYear,\\n\\t\\t\\t\\tendYear,\\n\\t\\t\\t\\tthis.o.beforeShowDecade\\n\\t\\t\\t);\\n\\n\\t\\t\\t// Generating millennium/centuries picker\\n\\t\\t\\tthis._fill_yearsView(\\n\\t\\t\\t\\t'.datepicker-centuries',\\n\\t\\t\\t\\t'century',\\n\\t\\t\\t\\t1000,\\n\\t\\t\\t\\tyear,\\n\\t\\t\\t\\tstartYear,\\n\\t\\t\\t\\tendYear,\\n\\t\\t\\t\\tthis.o.beforeShowCentury\\n\\t\\t\\t);\\n\\t\\t},\\n\\n\\t\\tupdateNavArrows: function(){\\n\\t\\t\\tif (!this._allow_update)\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\tvar d = new Date(this.viewDate),\\n\\t\\t\\t\\tyear = d.getUTCFullYear(),\\n\\t\\t\\t\\tmonth = d.getUTCMonth(),\\n\\t\\t\\t\\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\\n\\t\\t\\t\\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\\n\\t\\t\\t\\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\\n\\t\\t\\t\\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\\n\\t\\t\\t\\tprevIsDisabled,\\n\\t\\t\\t\\tnextIsDisabled,\\n\\t\\t\\t\\tfactor = 1;\\n\\t\\t\\tswitch (this.viewMode){\\n\\t\\t\\t\\tcase 0:\\n\\t\\t\\t\\t\\tprevIsDisabled = year <= startYear && month <= startMonth;\\n\\t\\t\\t\\t\\tnextIsDisabled = year >= endYear && month >= endMonth;\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tcase 4:\\n\\t\\t\\t\\t\\tfactor *= 10;\\n\\t\\t\\t\\t\\t/* falls through */\\n\\t\\t\\t\\tcase 3:\\n\\t\\t\\t\\t\\tfactor *= 10;\\n\\t\\t\\t\\t\\t/* falls through */\\n\\t\\t\\t\\tcase 2:\\n\\t\\t\\t\\t\\tfactor *= 10;\\n\\t\\t\\t\\t\\t/* falls through */\\n\\t\\t\\t\\tcase 1:\\n\\t\\t\\t\\t\\tprevIsDisabled = Math.floor(year / factor) * factor <= startYear;\\n\\t\\t\\t\\t\\tnextIsDisabled = Math.floor(year / factor) * factor + factor >= endYear;\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.picker.find('.prev').toggleClass('disabled', prevIsDisabled);\\n\\t\\t\\tthis.picker.find('.next').toggleClass('disabled', nextIsDisabled);\\n\\t\\t},\\n\\n\\t\\tclick: function(e){\\n\\t\\t\\te.preventDefault();\\n\\t\\t\\te.stopPropagation();\\n\\n\\t\\t\\tvar target, dir, day, year, month;\\n\\t\\t\\ttarget = $(e.target);\\n\\n\\t\\t\\t// Clicked on the switch\\n\\t\\t\\tif (target.hasClass('datepicker-switch') && this.viewMode !== this.o.maxViewMode){\\n\\t\\t\\t\\tthis.setViewMode(this.viewMode + 1);\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Clicked on today button\\n\\t\\t\\tif (target.hasClass('today') && !target.hasClass('day')){\\n\\t\\t\\t\\tthis.setViewMode(0);\\n\\t\\t\\t\\tthis._setDate(UTCToday(), this.o.todayBtn === 'linked' ? null : 'view');\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Clicked on clear button\\n\\t\\t\\tif (target.hasClass('clear')){\\n\\t\\t\\t\\tthis.clearDates();\\n\\t\\t\\t}\\n\\n\\t\\t\\tif (!target.hasClass('disabled')){\\n\\t\\t\\t\\t// Clicked on a day\\n\\t\\t\\t\\tif (target.hasClass('day')){\\n\\t\\t\\t\\t\\tday = Number(target.text());\\n\\t\\t\\t\\t\\tyear = this.viewDate.getUTCFullYear();\\n\\t\\t\\t\\t\\tmonth = this.viewDate.getUTCMonth();\\n\\n\\t\\t\\t\\t\\tif (target.hasClass('old') || target.hasClass('new')){\\n\\t\\t\\t\\t\\t\\tdir = target.hasClass('old') ? -1 : 1;\\n\\t\\t\\t\\t\\t\\tmonth = (month + dir + 12) % 12;\\n\\t\\t\\t\\t\\t\\tif ((dir === -1 && month === 11) || (dir === 1 && month === 0)) {\\n\\t\\t\\t\\t\\t\\t\\tyear += dir;\\n\\t\\t\\t\\t\\t\\t\\tif (this.o.updateViewDate) {\\n\\t\\t\\t\\t\\t\\t\\t\\tthis._trigger('changeYear', this.viewDate);\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\tif (this.o.updateViewDate) {\\n\\t\\t\\t\\t\\t\\t\\tthis._trigger('changeMonth', this.viewDate);\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tthis._setDate(UTCDate(year, month, day));\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Clicked on a month, year, decade, century\\n\\t\\t\\t\\tif (target.hasClass('month')\\n\\t\\t\\t\\t\\t\\t|| target.hasClass('year')\\n\\t\\t\\t\\t\\t\\t|| target.hasClass('decade')\\n\\t\\t\\t\\t\\t\\t|| target.hasClass('century')) {\\n\\t\\t\\t\\t\\tthis.viewDate.setUTCDate(1);\\n\\n\\t\\t\\t\\t\\tday = 1;\\n\\t\\t\\t\\t\\tif (this.viewMode === 1){\\n\\t\\t\\t\\t\\t\\tmonth = target.parent().find('span').index(target);\\n\\t\\t\\t\\t\\t\\tyear = this.viewDate.getUTCFullYear();\\n\\t\\t\\t\\t\\t\\tthis.viewDate.setUTCMonth(month);\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\tmonth = 0;\\n\\t\\t\\t\\t\\t\\tyear = Number(target.text());\\n\\t\\t\\t\\t\\t\\tthis.viewDate.setUTCFullYear(year);\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tthis._trigger(DPGlobal.viewModes[this.viewMode - 1].e, this.viewDate);\\n\\n\\t\\t\\t\\t\\tif (this.viewMode === this.o.minViewMode){\\n\\t\\t\\t\\t\\t\\tthis._setDate(UTCDate(year, month, day));\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\tthis.setViewMode(this.viewMode - 1);\\n\\t\\t\\t\\t\\t\\tthis.fill();\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\tif (this.picker.is(':visible') && this._focused_from){\\n\\t\\t\\t\\tthis._focused_from.focus();\\n\\t\\t\\t}\\n\\t\\t\\tdelete this._focused_from;\\n\\t\\t},\\n\\n\\t\\t// Clicked on prev or next\\n\\t\\tnavArrowsClick: function(e){\\n\\t\\t\\tvar target = $(e.target);\\n\\t\\t\\tvar dir = target.hasClass('prev') ? -1 : 1;\\n\\t\\t\\tif (this.viewMode !== 0){\\n\\t\\t\\t\\tdir *= DPGlobal.viewModes[this.viewMode].navStep * 12;\\n\\t\\t\\t}\\n\\t\\t\\tthis.viewDate = this.moveMonth(this.viewDate, dir);\\n\\t\\t\\tthis._trigger(DPGlobal.viewModes[this.viewMode].e, this.viewDate);\\n\\t\\t\\tthis.fill();\\n\\t\\t},\\n\\n\\t\\t_toggle_multidate: function(date){\\n\\t\\t\\tvar ix = this.dates.contains(date);\\n\\t\\t\\tif (!date){\\n\\t\\t\\t\\tthis.dates.clear();\\n\\t\\t\\t}\\n\\n\\t\\t\\tif (ix !== -1){\\n\\t\\t\\t\\tif (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive){\\n\\t\\t\\t\\t\\tthis.dates.remove(ix);\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else if (this.o.multidate === false) {\\n\\t\\t\\t\\tthis.dates.clear();\\n\\t\\t\\t\\tthis.dates.push(date);\\n\\t\\t\\t}\\n\\t\\t\\telse {\\n\\t\\t\\t\\tthis.dates.push(date);\\n\\t\\t\\t}\\n\\n\\t\\t\\tif (typeof this.o.multidate === 'number')\\n\\t\\t\\t\\twhile (this.dates.length > this.o.multidate)\\n\\t\\t\\t\\t\\tthis.dates.remove(0);\\n\\t\\t},\\n\\n\\t\\t_setDate: function(date, which){\\n\\t\\t\\tif (!which || which === 'date')\\n\\t\\t\\t\\tthis._toggle_multidate(date && new Date(date));\\n\\t\\t\\tif ((!which && this.o.updateViewDate) || which === 'view')\\n\\t\\t\\t\\tthis.viewDate = date && new Date(date);\\n\\n\\t\\t\\tthis.fill();\\n\\t\\t\\tthis.setValue();\\n\\t\\t\\tif (!which || which !== 'view') {\\n\\t\\t\\t\\tthis._trigger('changeDate');\\n\\t\\t\\t}\\n\\t\\t\\tthis.inputField.trigger('change');\\n\\t\\t\\tif (this.o.autoclose && (!which || which === 'date')){\\n\\t\\t\\t\\tthis.hide();\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\tmoveDay: function(date, dir){\\n\\t\\t\\tvar newDate = new Date(date);\\n\\t\\t\\tnewDate.setUTCDate(date.getUTCDate() + dir);\\n\\n\\t\\t\\treturn newDate;\\n\\t\\t},\\n\\n\\t\\tmoveWeek: function(date, dir){\\n\\t\\t\\treturn this.moveDay(date, dir * 7);\\n\\t\\t},\\n\\n\\t\\tmoveMonth: function(date, dir){\\n\\t\\t\\tif (!isValidDate(date))\\n\\t\\t\\t\\treturn this.o.defaultViewDate;\\n\\t\\t\\tif (!dir)\\n\\t\\t\\t\\treturn date;\\n\\t\\t\\tvar new_date = new Date(date.valueOf()),\\n\\t\\t\\t\\tday = new_date.getUTCDate(),\\n\\t\\t\\t\\tmonth = new_date.getUTCMonth(),\\n\\t\\t\\t\\tmag = Math.abs(dir),\\n\\t\\t\\t\\tnew_month, test;\\n\\t\\t\\tdir = dir > 0 ? 1 : -1;\\n\\t\\t\\tif (mag === 1){\\n\\t\\t\\t\\ttest = dir === -1\\n\\t\\t\\t\\t\\t// If going back one month, make sure month is not current month\\n\\t\\t\\t\\t\\t// (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)\\n\\t\\t\\t\\t\\t? function(){\\n\\t\\t\\t\\t\\t\\treturn new_date.getUTCMonth() === month;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t// If going forward one month, make sure month is as expected\\n\\t\\t\\t\\t\\t// (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)\\n\\t\\t\\t\\t\\t: function(){\\n\\t\\t\\t\\t\\t\\treturn new_date.getUTCMonth() !== new_month;\\n\\t\\t\\t\\t\\t};\\n\\t\\t\\t\\tnew_month = month + dir;\\n\\t\\t\\t\\tnew_date.setUTCMonth(new_month);\\n\\t\\t\\t\\t// Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11\\n\\t\\t\\t\\tnew_month = (new_month + 12) % 12;\\n\\t\\t\\t}\\n\\t\\t\\telse {\\n\\t\\t\\t\\t// For magnitudes >1, move one month at a time...\\n\\t\\t\\t\\tfor (var i=0; i < mag; i++)\\n\\t\\t\\t\\t\\t// ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...\\n\\t\\t\\t\\t\\tnew_date = this.moveMonth(new_date, dir);\\n\\t\\t\\t\\t// ...then reset the day, keeping it in the new month\\n\\t\\t\\t\\tnew_month = new_date.getUTCMonth();\\n\\t\\t\\t\\tnew_date.setUTCDate(day);\\n\\t\\t\\t\\ttest = function(){\\n\\t\\t\\t\\t\\treturn new_month !== new_date.getUTCMonth();\\n\\t\\t\\t\\t};\\n\\t\\t\\t}\\n\\t\\t\\t// Common date-resetting loop -- if date is beyond end of month, make it\\n\\t\\t\\t// end of month\\n\\t\\t\\twhile (test()){\\n\\t\\t\\t\\tnew_date.setUTCDate(--day);\\n\\t\\t\\t\\tnew_date.setUTCMonth(new_month);\\n\\t\\t\\t}\\n\\t\\t\\treturn new_date;\\n\\t\\t},\\n\\n\\t\\tmoveYear: function(date, dir){\\n\\t\\t\\treturn this.moveMonth(date, dir*12);\\n\\t\\t},\\n\\n\\t\\tmoveAvailableDate: function(date, dir, fn){\\n\\t\\t\\tdo {\\n\\t\\t\\t\\tdate = this[fn](date, dir);\\n\\n\\t\\t\\t\\tif (!this.dateWithinRange(date))\\n\\t\\t\\t\\t\\treturn false;\\n\\n\\t\\t\\t\\tfn = 'moveDay';\\n\\t\\t\\t}\\n\\t\\t\\twhile (this.dateIsDisabled(date));\\n\\n\\t\\t\\treturn date;\\n\\t\\t},\\n\\n\\t\\tweekOfDateIsDisabled: function(date){\\n\\t\\t\\treturn $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1;\\n\\t\\t},\\n\\n\\t\\tdateIsDisabled: function(date){\\n\\t\\t\\treturn (\\n\\t\\t\\t\\tthis.weekOfDateIsDisabled(date) ||\\n\\t\\t\\t\\t$.grep(this.o.datesDisabled, function(d){\\n\\t\\t\\t\\t\\treturn isUTCEquals(date, d);\\n\\t\\t\\t\\t}).length > 0\\n\\t\\t\\t);\\n\\t\\t},\\n\\n\\t\\tdateWithinRange: function(date){\\n\\t\\t\\treturn date >= this.o.startDate && date <= this.o.endDate;\\n\\t\\t},\\n\\n\\t\\tkeydown: function(e){\\n\\t\\t\\tif (!this.picker.is(':visible')){\\n\\t\\t\\t\\tif (e.keyCode === 40 || e.keyCode === 27) { // allow down to re-show picker\\n\\t\\t\\t\\t\\tthis.show();\\n\\t\\t\\t\\t\\te.stopPropagation();\\n }\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\tvar dateChanged = false,\\n\\t\\t\\t\\tdir, newViewDate,\\n\\t\\t\\t\\tfocusDate = this.focusDate || this.viewDate;\\n\\t\\t\\tswitch (e.keyCode){\\n\\t\\t\\t\\tcase 27: // escape\\n\\t\\t\\t\\t\\tif (this.focusDate){\\n\\t\\t\\t\\t\\t\\tthis.focusDate = null;\\n\\t\\t\\t\\t\\t\\tthis.viewDate = this.dates.get(-1) || this.viewDate;\\n\\t\\t\\t\\t\\t\\tthis.fill();\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\telse\\n\\t\\t\\t\\t\\t\\tthis.hide();\\n\\t\\t\\t\\t\\te.preventDefault();\\n\\t\\t\\t\\t\\te.stopPropagation();\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tcase 37: // left\\n\\t\\t\\t\\tcase 38: // up\\n\\t\\t\\t\\tcase 39: // right\\n\\t\\t\\t\\tcase 40: // down\\n\\t\\t\\t\\t\\tif (!this.o.keyboardNavigation || this.o.daysOfWeekDisabled.length === 7)\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\tdir = e.keyCode === 37 || e.keyCode === 38 ? -1 : 1;\\n if (this.viewMode === 0) {\\n \\t\\t\\t\\t\\tif (e.ctrlKey){\\n \\t\\t\\t\\t\\t\\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\\n\\n \\t\\t\\t\\t\\t\\tif (newViewDate)\\n \\t\\t\\t\\t\\t\\t\\tthis._trigger('changeYear', this.viewDate);\\n \\t\\t\\t\\t\\t} else if (e.shiftKey){\\n \\t\\t\\t\\t\\t\\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\\n\\n \\t\\t\\t\\t\\t\\tif (newViewDate)\\n \\t\\t\\t\\t\\t\\t\\tthis._trigger('changeMonth', this.viewDate);\\n \\t\\t\\t\\t\\t} else if (e.keyCode === 37 || e.keyCode === 39){\\n \\t\\t\\t\\t\\t\\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveDay');\\n \\t\\t\\t\\t\\t} else if (!this.weekOfDateIsDisabled(focusDate)){\\n \\t\\t\\t\\t\\t\\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveWeek');\\n \\t\\t\\t\\t\\t}\\n } else if (this.viewMode === 1) {\\n if (e.keyCode === 38 || e.keyCode === 40) {\\n dir = dir * 4;\\n }\\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\\n } else if (this.viewMode === 2) {\\n if (e.keyCode === 38 || e.keyCode === 40) {\\n dir = dir * 4;\\n }\\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\\n }\\n\\t\\t\\t\\t\\tif (newViewDate){\\n\\t\\t\\t\\t\\t\\tthis.focusDate = this.viewDate = newViewDate;\\n\\t\\t\\t\\t\\t\\tthis.setValue();\\n\\t\\t\\t\\t\\t\\tthis.fill();\\n\\t\\t\\t\\t\\t\\te.preventDefault();\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tcase 13: // enter\\n\\t\\t\\t\\t\\tif (!this.o.forceParse)\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\tfocusDate = this.focusDate || this.dates.get(-1) || this.viewDate;\\n\\t\\t\\t\\t\\tif (this.o.keyboardNavigation) {\\n\\t\\t\\t\\t\\t\\tthis._toggle_multidate(focusDate);\\n\\t\\t\\t\\t\\t\\tdateChanged = true;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tthis.focusDate = null;\\n\\t\\t\\t\\t\\tthis.viewDate = this.dates.get(-1) || this.viewDate;\\n\\t\\t\\t\\t\\tthis.setValue();\\n\\t\\t\\t\\t\\tthis.fill();\\n\\t\\t\\t\\t\\tif (this.picker.is(':visible')){\\n\\t\\t\\t\\t\\t\\te.preventDefault();\\n\\t\\t\\t\\t\\t\\te.stopPropagation();\\n\\t\\t\\t\\t\\t\\tif (this.o.autoclose)\\n\\t\\t\\t\\t\\t\\t\\tthis.hide();\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\tcase 9: // tab\\n\\t\\t\\t\\t\\tthis.focusDate = null;\\n\\t\\t\\t\\t\\tthis.viewDate = this.dates.get(-1) || this.viewDate;\\n\\t\\t\\t\\t\\tthis.fill();\\n\\t\\t\\t\\t\\tthis.hide();\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\t\\t\\tif (dateChanged){\\n\\t\\t\\t\\tif (this.dates.length)\\n\\t\\t\\t\\t\\tthis._trigger('changeDate');\\n\\t\\t\\t\\telse\\n\\t\\t\\t\\t\\tthis._trigger('clearDate');\\n\\t\\t\\t\\tthis.inputField.trigger('change');\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\tsetViewMode: function(viewMode){\\n\\t\\t\\tthis.viewMode = viewMode;\\n\\t\\t\\tthis.picker\\n\\t\\t\\t\\t.children('div')\\n\\t\\t\\t\\t.hide()\\n\\t\\t\\t\\t.filter('.datepicker-' + DPGlobal.viewModes[this.viewMode].clsName)\\n\\t\\t\\t\\t\\t.show();\\n\\t\\t\\tthis.updateNavArrows();\\n this._trigger('changeViewMode', new Date(this.viewDate));\\n\\t\\t}\\n\\t};\\n\\n\\tvar DateRangePicker = function(element, options){\\n\\t\\t$.data(element, 'datepicker', this);\\n\\t\\tthis.element = $(element);\\n\\t\\tthis.inputs = $.map(options.inputs, function(i){\\n\\t\\t\\treturn i.jquery ? i[0] : i;\\n\\t\\t});\\n\\t\\tdelete options.inputs;\\n\\n\\t\\tthis.keepEmptyValues = options.keepEmptyValues;\\n\\t\\tdelete options.keepEmptyValues;\\n\\n\\t\\tdatepickerPlugin.call($(this.inputs), options)\\n\\t\\t\\t.on('changeDate', $.proxy(this.dateUpdated, this));\\n\\n\\t\\tthis.pickers = $.map(this.inputs, function(i){\\n\\t\\t\\treturn $.data(i, 'datepicker');\\n\\t\\t});\\n\\t\\tthis.updateDates();\\n\\t};\\n\\tDateRangePicker.prototype = {\\n\\t\\tupdateDates: function(){\\n\\t\\t\\tthis.dates = $.map(this.pickers, function(i){\\n\\t\\t\\t\\treturn i.getUTCDate();\\n\\t\\t\\t});\\n\\t\\t\\tthis.updateRanges();\\n\\t\\t},\\n\\t\\tupdateRanges: function(){\\n\\t\\t\\tvar range = $.map(this.dates, function(d){\\n\\t\\t\\t\\treturn d.valueOf();\\n\\t\\t\\t});\\n\\t\\t\\t$.each(this.pickers, function(i, p){\\n\\t\\t\\t\\tp.setRange(range);\\n\\t\\t\\t});\\n\\t\\t},\\n\\t\\tdateUpdated: function(e){\\n\\t\\t\\t// `this.updating` is a workaround for preventing infinite recursion\\n\\t\\t\\t// between `changeDate` triggering and `setUTCDate` calling. Until\\n\\t\\t\\t// there is a better mechanism.\\n\\t\\t\\tif (this.updating)\\n\\t\\t\\t\\treturn;\\n\\t\\t\\tthis.updating = true;\\n\\n\\t\\t\\tvar dp = $.data(e.target, 'datepicker');\\n\\n\\t\\t\\tif (dp === undefined) {\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar new_date = dp.getUTCDate(),\\n\\t\\t\\t\\tkeep_empty_values = this.keepEmptyValues,\\n\\t\\t\\t\\ti = $.inArray(e.target, this.inputs),\\n\\t\\t\\t\\tj = i - 1,\\n\\t\\t\\t\\tk = i + 1,\\n\\t\\t\\t\\tl = this.inputs.length;\\n\\t\\t\\tif (i === -1)\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t$.each(this.pickers, function(i, p){\\n\\t\\t\\t\\tif (!p.getUTCDate() && (p === dp || !keep_empty_values))\\n\\t\\t\\t\\t\\tp.setUTCDate(new_date);\\n\\t\\t\\t});\\n\\n\\t\\t\\tif (new_date < this.dates[j]){\\n\\t\\t\\t\\t// Date being moved earlier/left\\n\\t\\t\\t\\twhile (j >= 0 && new_date < this.dates[j]){\\n\\t\\t\\t\\t\\tthis.pickers[j--].setUTCDate(new_date);\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else if (new_date > this.dates[k]){\\n\\t\\t\\t\\t// Date being moved later/right\\n\\t\\t\\t\\twhile (k < l && new_date > this.dates[k]){\\n\\t\\t\\t\\t\\tthis.pickers[k++].setUTCDate(new_date);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tthis.updateDates();\\n\\n\\t\\t\\tdelete this.updating;\\n\\t\\t},\\n\\t\\tdestroy: function(){\\n\\t\\t\\t$.map(this.pickers, function(p){ p.destroy(); });\\n\\t\\t\\t$(this.inputs).off('changeDate', this.dateUpdated);\\n\\t\\t\\tdelete this.element.data().datepicker;\\n\\t\\t},\\n\\t\\tremove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead')\\n\\t};\\n\\n\\tfunction opts_from_el(el, prefix){\\n\\t\\t// Derive options from element data-attrs\\n\\t\\tvar data = $(el).data(),\\n\\t\\t\\tout = {}, inkey,\\n\\t\\t\\treplace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');\\n\\t\\tprefix = new RegExp('^' + prefix.toLowerCase());\\n\\t\\tfunction re_lower(_,a){\\n\\t\\t\\treturn a.toLowerCase();\\n\\t\\t}\\n\\t\\tfor (var key in data)\\n\\t\\t\\tif (prefix.test(key)){\\n\\t\\t\\t\\tinkey = key.replace(replace, re_lower);\\n\\t\\t\\t\\tout[inkey] = data[key];\\n\\t\\t\\t}\\n\\t\\treturn out;\\n\\t}\\n\\n\\tfunction opts_from_locale(lang){\\n\\t\\t// Derive options from locale plugins\\n\\t\\tvar out = {};\\n\\t\\t// Check if \\\"de-DE\\\" style date is available, if not language should\\n\\t\\t// fallback to 2 letter code eg \\\"de\\\"\\n\\t\\tif (!dates[lang]){\\n\\t\\t\\tlang = lang.split('-')[0];\\n\\t\\t\\tif (!dates[lang])\\n\\t\\t\\t\\treturn;\\n\\t\\t}\\n\\t\\tvar d = dates[lang];\\n\\t\\t$.each(locale_opts, function(i,k){\\n\\t\\t\\tif (k in d)\\n\\t\\t\\t\\tout[k] = d[k];\\n\\t\\t});\\n\\t\\treturn out;\\n\\t}\\n\\n\\tvar old = $.fn.datepicker;\\n\\tvar datepickerPlugin = function(option){\\n\\t\\tvar args = Array.apply(null, arguments);\\n\\t\\targs.shift();\\n\\t\\tvar internal_return;\\n\\t\\tthis.each(function(){\\n\\t\\t\\tvar $this = $(this),\\n\\t\\t\\t\\tdata = $this.data('datepicker'),\\n\\t\\t\\t\\toptions = typeof option === 'object' && option;\\n\\t\\t\\tif (!data){\\n\\t\\t\\t\\tvar elopts = opts_from_el(this, 'date'),\\n\\t\\t\\t\\t\\t// Preliminary otions\\n\\t\\t\\t\\t\\txopts = $.extend({}, defaults, elopts, options),\\n\\t\\t\\t\\t\\tlocopts = opts_from_locale(xopts.language),\\n\\t\\t\\t\\t\\t// Options priority: js args, data-attrs, locales, defaults\\n\\t\\t\\t\\t\\topts = $.extend({}, defaults, locopts, elopts, options);\\n\\t\\t\\t\\tif ($this.hasClass('input-daterange') || opts.inputs){\\n\\t\\t\\t\\t\\t$.extend(opts, {\\n\\t\\t\\t\\t\\t\\tinputs: opts.inputs || $this.find('input').toArray()\\n\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t\\tdata = new DateRangePicker(this, opts);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\telse {\\n\\t\\t\\t\\t\\tdata = new Datepicker(this, opts);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t$this.data('datepicker', data);\\n\\t\\t\\t}\\n\\t\\t\\tif (typeof option === 'string' && typeof data[option] === 'function'){\\n\\t\\t\\t\\tinternal_return = data[option].apply(data, args);\\n\\t\\t\\t}\\n\\t\\t});\\n\\n\\t\\tif (\\n\\t\\t\\tinternal_return === undefined ||\\n\\t\\t\\tinternal_return instanceof Datepicker ||\\n\\t\\t\\tinternal_return instanceof DateRangePicker\\n\\t\\t)\\n\\t\\t\\treturn this;\\n\\n\\t\\tif (this.length > 1)\\n\\t\\t\\tthrow new Error('Using only allowed for the collection of a single element (' + option + ' function)');\\n\\t\\telse\\n\\t\\t\\treturn internal_return;\\n\\t};\\n\\t$.fn.datepicker = datepickerPlugin;\\n\\n\\tvar defaults = $.fn.datepicker.defaults = {\\n\\t\\tassumeNearbyYear: false,\\n\\t\\tautoclose: false,\\n\\t\\tbeforeShowDay: $.noop,\\n\\t\\tbeforeShowMonth: $.noop,\\n\\t\\tbeforeShowYear: $.noop,\\n\\t\\tbeforeShowDecade: $.noop,\\n\\t\\tbeforeShowCentury: $.noop,\\n\\t\\tcalendarWeeks: false,\\n\\t\\tclearBtn: false,\\n\\t\\ttoggleActive: false,\\n\\t\\tdaysOfWeekDisabled: [],\\n\\t\\tdaysOfWeekHighlighted: [],\\n\\t\\tdatesDisabled: [],\\n\\t\\tendDate: Infinity,\\n\\t\\tforceParse: true,\\n\\t\\tformat: 'mm/dd/yyyy',\\n\\t\\tkeepEmptyValues: false,\\n\\t\\tkeyboardNavigation: true,\\n\\t\\tlanguage: 'en',\\n\\t\\tminViewMode: 0,\\n\\t\\tmaxViewMode: 4,\\n\\t\\tmultidate: false,\\n\\t\\tmultidateSeparator: ',',\\n\\t\\torientation: \\\"auto\\\",\\n\\t\\trtl: false,\\n\\t\\tstartDate: -Infinity,\\n\\t\\tstartView: 0,\\n\\t\\ttodayBtn: false,\\n\\t\\ttodayHighlight: false,\\n\\t\\tupdateViewDate: true,\\n\\t\\tweekStart: 0,\\n\\t\\tdisableTouchKeyboard: false,\\n\\t\\tenableOnReadonly: true,\\n\\t\\tshowOnFocus: true,\\n\\t\\tzIndexOffset: 10,\\n\\t\\tcontainer: 'body',\\n\\t\\timmediateUpdates: false,\\n\\t\\tdateCells: false,\\n\\t\\ttitle: '',\\n\\t\\ttemplates: {\\n\\t\\t\\tleftArrow: '«',\\n\\t\\t\\trightArrow: '»'\\n\\t\\t}\\n\\t};\\n\\tvar locale_opts = $.fn.datepicker.locale_opts = [\\n\\t\\t'format',\\n\\t\\t'rtl',\\n\\t\\t'weekStart'\\n\\t];\\n\\t$.fn.datepicker.Constructor = Datepicker;\\n\\tvar dates = $.fn.datepicker.dates = {\\n\\t\\ten: {\\n\\t\\t\\tdays: [\\\"Sunday\\\", \\\"Monday\\\", \\\"Tuesday\\\", \\\"Wednesday\\\", \\\"Thursday\\\", \\\"Friday\\\", \\\"Saturday\\\"],\\n\\t\\t\\tdaysShort: [\\\"Sun\\\", \\\"Mon\\\", \\\"Tue\\\", \\\"Wed\\\", \\\"Thu\\\", \\\"Fri\\\", \\\"Sat\\\"],\\n\\t\\t\\tdaysMin: [\\\"Su\\\", \\\"Mo\\\", \\\"Tu\\\", \\\"We\\\", \\\"Th\\\", \\\"Fr\\\", \\\"Sa\\\"],\\n\\t\\t\\tmonths: [\\\"January\\\", \\\"February\\\", \\\"March\\\", \\\"April\\\", \\\"May\\\", \\\"June\\\", \\\"July\\\", \\\"August\\\", \\\"September\\\", \\\"October\\\", \\\"November\\\", \\\"December\\\"],\\n\\t\\t\\tmonthsShort: [\\\"Jan\\\", \\\"Feb\\\", \\\"Mar\\\", \\\"Apr\\\", \\\"May\\\", \\\"Jun\\\", \\\"Jul\\\", \\\"Aug\\\", \\\"Sep\\\", \\\"Oct\\\", \\\"Nov\\\", \\\"Dec\\\"],\\n\\t\\t\\ttoday: \\\"Today\\\",\\n\\t\\t\\tclear: \\\"Clear\\\",\\n\\t\\t\\ttitleFormat: \\\"MM yyyy\\\"\\n\\t\\t}\\n\\t};\\n\\n\\tvar DPGlobal = {\\n\\t\\tviewModes: [\\n\\t\\t\\t{\\n\\t\\t\\t\\tnames: ['days', 'month'],\\n\\t\\t\\t\\tclsName: 'days',\\n\\t\\t\\t\\te: 'changeMonth'\\n\\t\\t\\t},\\n\\t\\t\\t{\\n\\t\\t\\t\\tnames: ['months', 'year'],\\n\\t\\t\\t\\tclsName: 'months',\\n\\t\\t\\t\\te: 'changeYear',\\n\\t\\t\\t\\tnavStep: 1\\n\\t\\t\\t},\\n\\t\\t\\t{\\n\\t\\t\\t\\tnames: ['years', 'decade'],\\n\\t\\t\\t\\tclsName: 'years',\\n\\t\\t\\t\\te: 'changeDecade',\\n\\t\\t\\t\\tnavStep: 10\\n\\t\\t\\t},\\n\\t\\t\\t{\\n\\t\\t\\t\\tnames: ['decades', 'century'],\\n\\t\\t\\t\\tclsName: 'decades',\\n\\t\\t\\t\\te: 'changeCentury',\\n\\t\\t\\t\\tnavStep: 100\\n\\t\\t\\t},\\n\\t\\t\\t{\\n\\t\\t\\t\\tnames: ['centuries', 'millennium'],\\n\\t\\t\\t\\tclsName: 'centuries',\\n\\t\\t\\t\\te: 'changeMillennium',\\n\\t\\t\\t\\tnavStep: 1000\\n\\t\\t\\t}\\n\\t\\t],\\n\\t\\tvalidParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,\\n\\t\\tnonpunctuation: /[^ -\\\\/:-@\\\\u5e74\\\\u6708\\\\u65e5\\\\[-`{-~\\\\t\\\\n\\\\r]+/g,\\n\\t\\tparseFormat: function(format){\\n\\t\\t\\tif (typeof format.toValue === 'function' && typeof format.toDisplay === 'function')\\n return format;\\n // IE treats \\\\0 as a string end in inputs (truncating the value),\\n\\t\\t\\t// so it's a bad format delimiter, anyway\\n\\t\\t\\tvar separators = format.replace(this.validParts, '\\\\0').split('\\\\0'),\\n\\t\\t\\t\\tparts = format.match(this.validParts);\\n\\t\\t\\tif (!separators || !separators.length || !parts || parts.length === 0){\\n\\t\\t\\t\\tthrow new Error(\\\"Invalid date format.\\\");\\n\\t\\t\\t}\\n\\t\\t\\treturn {separators: separators, parts: parts};\\n\\t\\t},\\n\\t\\tparseDate: function(date, format, language, assumeNearby){\\n\\t\\t\\tif (!date)\\n\\t\\t\\t\\treturn undefined;\\n\\t\\t\\tif (date instanceof Date)\\n\\t\\t\\t\\treturn date;\\n\\t\\t\\tif (typeof format === 'string')\\n\\t\\t\\t\\tformat = DPGlobal.parseFormat(format);\\n\\t\\t\\tif (format.toValue)\\n\\t\\t\\t\\treturn format.toValue(date, format, language);\\n\\t\\t\\tvar fn_map = {\\n\\t\\t\\t\\t\\td: 'moveDay',\\n\\t\\t\\t\\t\\tm: 'moveMonth',\\n\\t\\t\\t\\t\\tw: 'moveWeek',\\n\\t\\t\\t\\t\\ty: 'moveYear'\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tdateAliases = {\\n\\t\\t\\t\\t\\tyesterday: '-1d',\\n\\t\\t\\t\\t\\ttoday: '+0d',\\n\\t\\t\\t\\t\\ttomorrow: '+1d'\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tparts, part, dir, i, fn;\\n\\t\\t\\tif (date in dateAliases){\\n\\t\\t\\t\\tdate = dateAliases[date];\\n\\t\\t\\t}\\n\\t\\t\\tif (/^[\\\\-+]\\\\d+[dmwy]([\\\\s,]+[\\\\-+]\\\\d+[dmwy])*$/i.test(date)){\\n\\t\\t\\t\\tparts = date.match(/([\\\\-+]\\\\d+)([dmwy])/gi);\\n\\t\\t\\t\\tdate = new Date();\\n\\t\\t\\t\\tfor (i=0; i < parts.length; i++){\\n\\t\\t\\t\\t\\tpart = parts[i].match(/([\\\\-+]\\\\d+)([dmwy])/i);\\n\\t\\t\\t\\t\\tdir = Number(part[1]);\\n\\t\\t\\t\\t\\tfn = fn_map[part[2].toLowerCase()];\\n\\t\\t\\t\\t\\tdate = Datepicker.prototype[fn](date, dir);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn Datepicker.prototype._zero_utc_time(date);\\n\\t\\t\\t}\\n\\n\\t\\t\\tparts = date && date.match(this.nonpunctuation) || [];\\n\\n\\t\\t\\tfunction applyNearbyYear(year, threshold){\\n\\t\\t\\t\\tif (threshold === true)\\n\\t\\t\\t\\t\\tthreshold = 10;\\n\\n\\t\\t\\t\\t// if year is 2 digits or less, than the user most likely is trying to get a recent century\\n\\t\\t\\t\\tif (year < 100){\\n\\t\\t\\t\\t\\tyear += 2000;\\n\\t\\t\\t\\t\\t// if the new year is more than threshold years in advance, use last century\\n\\t\\t\\t\\t\\tif (year > ((new Date()).getFullYear()+threshold)){\\n\\t\\t\\t\\t\\t\\tyear -= 100;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn year;\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar parsed = {},\\n\\t\\t\\t\\tsetters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],\\n\\t\\t\\t\\tsetters_map = {\\n\\t\\t\\t\\t\\tyyyy: function(d,v){\\n\\t\\t\\t\\t\\t\\treturn d.setUTCFullYear(assumeNearby ? applyNearbyYear(v, assumeNearby) : v);\\n\\t\\t\\t\\t\\t},\\n\\t\\t\\t\\t\\tm: function(d,v){\\n\\t\\t\\t\\t\\t\\tif (isNaN(d))\\n\\t\\t\\t\\t\\t\\t\\treturn d;\\n\\t\\t\\t\\t\\t\\tv -= 1;\\n\\t\\t\\t\\t\\t\\twhile (v < 0) v += 12;\\n\\t\\t\\t\\t\\t\\tv %= 12;\\n\\t\\t\\t\\t\\t\\td.setUTCMonth(v);\\n\\t\\t\\t\\t\\t\\twhile (d.getUTCMonth() !== v)\\n\\t\\t\\t\\t\\t\\t\\td.setUTCDate(d.getUTCDate()-1);\\n\\t\\t\\t\\t\\t\\treturn d;\\n\\t\\t\\t\\t\\t},\\n\\t\\t\\t\\t\\td: function(d,v){\\n\\t\\t\\t\\t\\t\\treturn d.setUTCDate(v);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tval, filtered;\\n\\t\\t\\tsetters_map['yy'] = setters_map['yyyy'];\\n\\t\\t\\tsetters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];\\n\\t\\t\\tsetters_map['dd'] = setters_map['d'];\\n\\t\\t\\tdate = UTCToday();\\n\\t\\t\\tvar fparts = format.parts.slice();\\n\\t\\t\\t// Remove noop parts\\n\\t\\t\\tif (parts.length !== fparts.length){\\n\\t\\t\\t\\tfparts = $(fparts).filter(function(i,p){\\n\\t\\t\\t\\t\\treturn $.inArray(p, setters_order) !== -1;\\n\\t\\t\\t\\t}).toArray();\\n\\t\\t\\t}\\n\\t\\t\\t// Process remainder\\n\\t\\t\\tfunction match_part(){\\n\\t\\t\\t\\tvar m = this.slice(0, parts[i].length),\\n\\t\\t\\t\\t\\tp = parts[i].slice(0, m.length);\\n\\t\\t\\t\\treturn m.toLowerCase() === p.toLowerCase();\\n\\t\\t\\t}\\n\\t\\t\\tif (parts.length === fparts.length){\\n\\t\\t\\t\\tvar cnt;\\n\\t\\t\\t\\tfor (i=0, cnt = fparts.length; i < cnt; i++){\\n\\t\\t\\t\\t\\tval = parseInt(parts[i], 10);\\n\\t\\t\\t\\t\\tpart = fparts[i];\\n\\t\\t\\t\\t\\tif (isNaN(val)){\\n\\t\\t\\t\\t\\t\\tswitch (part){\\n\\t\\t\\t\\t\\t\\t\\tcase 'MM':\\n\\t\\t\\t\\t\\t\\t\\t\\tfiltered = $(dates[language].months).filter(match_part);\\n\\t\\t\\t\\t\\t\\t\\t\\tval = $.inArray(filtered[0], dates[language].months) + 1;\\n\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\t\\tcase 'M':\\n\\t\\t\\t\\t\\t\\t\\t\\tfiltered = $(dates[language].monthsShort).filter(match_part);\\n\\t\\t\\t\\t\\t\\t\\t\\tval = $.inArray(filtered[0], dates[language].monthsShort) + 1;\\n\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tparsed[part] = val;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvar _date, s;\\n\\t\\t\\t\\tfor (i=0; i < setters_order.length; i++){\\n\\t\\t\\t\\t\\ts = setters_order[i];\\n\\t\\t\\t\\t\\tif (s in parsed && !isNaN(parsed[s])){\\n\\t\\t\\t\\t\\t\\t_date = new Date(date);\\n\\t\\t\\t\\t\\t\\tsetters_map[s](_date, parsed[s]);\\n\\t\\t\\t\\t\\t\\tif (!isNaN(_date))\\n\\t\\t\\t\\t\\t\\t\\tdate = _date;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\treturn date;\\n\\t\\t},\\n\\t\\tformatDate: function(date, format, language){\\n\\t\\t\\tif (!date)\\n\\t\\t\\t\\treturn '';\\n\\t\\t\\tif (typeof format === 'string')\\n\\t\\t\\t\\tformat = DPGlobal.parseFormat(format);\\n\\t\\t\\tif (format.toDisplay)\\n return format.toDisplay(date, format, language);\\n var val = {\\n\\t\\t\\t\\td: date.getUTCDate(),\\n\\t\\t\\t\\tD: dates[language].daysShort[date.getUTCDay()],\\n\\t\\t\\t\\tDD: dates[language].days[date.getUTCDay()],\\n\\t\\t\\t\\tm: date.getUTCMonth() + 1,\\n\\t\\t\\t\\tM: dates[language].monthsShort[date.getUTCMonth()],\\n\\t\\t\\t\\tMM: dates[language].months[date.getUTCMonth()],\\n\\t\\t\\t\\tyy: date.getUTCFullYear().toString().substring(2),\\n\\t\\t\\t\\tyyyy: date.getUTCFullYear()\\n\\t\\t\\t};\\n\\t\\t\\tval.dd = (val.d < 10 ? '0' : '') + val.d;\\n\\t\\t\\tval.mm = (val.m < 10 ? '0' : '') + val.m;\\n\\t\\t\\tdate = [];\\n\\t\\t\\tvar seps = $.extend([], format.separators);\\n\\t\\t\\tfor (var i=0, cnt = format.parts.length; i <= cnt; i++){\\n\\t\\t\\t\\tif (seps.length)\\n\\t\\t\\t\\t\\tdate.push(seps.shift());\\n\\t\\t\\t\\tdate.push(val[format.parts[i]]);\\n\\t\\t\\t}\\n\\t\\t\\treturn date.join('');\\n\\t\\t},\\n\\t\\theadTemplate: ''+\\n\\t\\t\\t ''+\\n\\t\\t\\t ''+\\n\\t\\t\\t ''+\\n\\t\\t\\t\\t\\t\\t\\t''+\\n\\t\\t\\t\\t\\t\\t\\t\\t'«'+\\n\\t\\t\\t\\t\\t\\t\\t\\t''+\\n\\t\\t\\t\\t\\t\\t\\t\\t'»'+\\n\\t\\t\\t\\t\\t\\t\\t''+\\n\\t\\t\\t\\t\\t\\t'',\\n\\t\\tcontTemplate: '',\\n\\t\\tfootTemplate: ''+\\n\\t\\t\\t\\t\\t\\t\\t''+\\n\\t\\t\\t\\t\\t\\t\\t\\t''+\\n\\t\\t\\t\\t\\t\\t\\t''+\\n\\t\\t\\t\\t\\t\\t\\t''+\\n\\t\\t\\t\\t\\t\\t\\t\\t''+\\n\\t\\t\\t\\t\\t\\t\\t''+\\n\\t\\t\\t\\t\\t\\t''\\n\\t};\\n\\tDPGlobal.template = '
'+\\n\\t\\t\\t\\t\\t\\t\\t'
'+\\n\\t\\t\\t\\t\\t\\t\\t\\t''+\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tDPGlobal.headTemplate+\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t''+\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tDPGlobal.footTemplate+\\n\\t\\t\\t\\t\\t\\t\\t\\t'
'+\\n\\t\\t\\t\\t\\t\\t\\t'
'+\\n\\t\\t\\t\\t\\t\\t\\t'
'+\\n\\t\\t\\t\\t\\t\\t\\t\\t''+\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tDPGlobal.headTemplate+\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tDPGlobal.contTemplate+\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tDPGlobal.footTemplate+\\n\\t\\t\\t\\t\\t\\t\\t\\t'
'+\\n\\t\\t\\t\\t\\t\\t\\t'
'+\\n\\t\\t\\t\\t\\t\\t\\t'
'+\\n\\t\\t\\t\\t\\t\\t\\t\\t''+\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tDPGlobal.headTemplate+\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tDPGlobal.contTemplate+\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tDPGlobal.footTemplate+\\n\\t\\t\\t\\t\\t\\t\\t\\t'
'+\\n\\t\\t\\t\\t\\t\\t\\t'
'+\\n\\t\\t\\t\\t\\t\\t\\t'
'+\\n\\t\\t\\t\\t\\t\\t\\t\\t''+\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tDPGlobal.headTemplate+\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tDPGlobal.contTemplate+\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tDPGlobal.footTemplate+\\n\\t\\t\\t\\t\\t\\t\\t\\t'
'+\\n\\t\\t\\t\\t\\t\\t\\t'
'+\\n\\t\\t\\t\\t\\t\\t\\t'
'+\\n\\t\\t\\t\\t\\t\\t\\t\\t''+\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tDPGlobal.headTemplate+\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tDPGlobal.contTemplate+\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tDPGlobal.footTemplate+\\n\\t\\t\\t\\t\\t\\t\\t\\t'
'+\\n\\t\\t\\t\\t\\t\\t\\t'
'+\\n\\t\\t\\t\\t\\t\\t'
';\\n\\n\\t$.fn.datepicker.DPGlobal = DPGlobal;\\n\\n\\n\\t/* DATEPICKER NO CONFLICT\\n\\t* =================== */\\n\\n\\t$.fn.datepicker.noConflict = function(){\\n\\t\\t$.fn.datepicker = old;\\n\\t\\treturn this;\\n\\t};\\n\\n\\t/* DATEPICKER VERSION\\n\\t * =================== */\\n\\t$.fn.datepicker.version = '1.7.0-RC1';\\n\\n\\t$.fn.datepicker.deprecated = function(msg){\\n\\t\\tvar console = window.console;\\n\\t\\tif (console && console.warn) {\\n\\t\\t\\tconsole.warn('DEPRECATED: ' + msg);\\n\\t\\t}\\n\\t};\\n\\n\\n\\t/* DATEPICKER DATA-API\\n\\t* ================== */\\n\\n\\t$(document).on(\\n\\t\\t'focus.datepicker.data-api click.datepicker.data-api',\\n\\t\\t'[data-provide=\\\"datepicker\\\"]',\\n\\t\\tfunction(e){\\n\\t\\t\\tvar $this = $(this);\\n\\t\\t\\tif ($this.data('datepicker'))\\n\\t\\t\\t\\treturn;\\n\\t\\t\\te.preventDefault();\\n\\t\\t\\t// component click requires us to explicitly show it\\n\\t\\t\\tdatepickerPlugin.call($this, 'show');\\n\\t\\t}\\n\\t);\\n\\t$(function(){\\n\\t\\tdatepickerPlugin.call($('[data-provide=\\\"datepicker-inline\\\"]'));\\n\\t});\\n\\n}));\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// E:/jenkins_home/workspace/_agenda-unco-front-legacy_master/frontend-web/~/raw-loader!E:/jenkins_home/workspace/_agenda-unco-front-legacy_master/frontend-web/~/bootstrap-datepicker/js/bootstrap-datepicker.js\n// module id = ../../../../raw-loader/index.js!../../../../bootstrap-datepicker/js/bootstrap-datepicker.js\n// module chunks = 3","module.exports = \"/**\\n * Spanish translation for bootstrap-datepicker\\n * Bruno Bonamin \\n */\\n;(function($){\\n\\t$.fn.datepicker.dates['es'] = {\\n\\t\\tdays: [\\\"Domingo\\\", \\\"Lunes\\\", \\\"Martes\\\", \\\"Miércoles\\\", \\\"Jueves\\\", \\\"Viernes\\\", \\\"Sábado\\\"],\\n\\t\\tdaysShort: [\\\"Dom\\\", \\\"Lun\\\", \\\"Mar\\\", \\\"Mié\\\", \\\"Jue\\\", \\\"Vie\\\", \\\"Sáb\\\"],\\n\\t\\tdaysMin: [\\\"Do\\\", \\\"Lu\\\", \\\"Ma\\\", \\\"Mi\\\", \\\"Ju\\\", \\\"Vi\\\", \\\"Sa\\\"],\\n\\t\\tmonths: [\\\"Enero\\\", \\\"Febrero\\\", \\\"Marzo\\\", \\\"Abril\\\", \\\"Mayo\\\", \\\"Junio\\\", \\\"Julio\\\", \\\"Agosto\\\", \\\"Septiembre\\\", \\\"Octubre\\\", \\\"Noviembre\\\", \\\"Diciembre\\\"],\\n\\t\\tmonthsShort: [\\\"Ene\\\", \\\"Feb\\\", \\\"Mar\\\", \\\"Abr\\\", \\\"May\\\", \\\"Jun\\\", \\\"Jul\\\", \\\"Ago\\\", \\\"Sep\\\", \\\"Oct\\\", \\\"Nov\\\", \\\"Dic\\\"],\\n\\t\\ttoday: \\\"Hoy\\\",\\n\\t\\tmonthsTitle: \\\"Meses\\\",\\n\\t\\tclear: \\\"Borrar\\\",\\n\\t\\tweekStart: 1,\\n\\t\\tformat: \\\"dd/mm/yyyy\\\"\\n\\t};\\n}(jQuery));\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// E:/jenkins_home/workspace/_agenda-unco-front-legacy_master/frontend-web/~/raw-loader!E:/jenkins_home/workspace/_agenda-unco-front-legacy_master/frontend-web/~/bootstrap-datepicker/js/locales/bootstrap-datepicker.es.js\n// module id = ../../../../raw-loader/index.js!../../../../bootstrap-datepicker/js/locales/bootstrap-datepicker.es.js\n// module chunks = 3","module.exports = \"/*!\\n * Timepicker Component for Twitter Bootstrap\\n *\\n * Copyright 2013 Joris de Wit and bootstrap-timepicker contributors\\n *\\n * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors\\n *\\n * For the full copyright and license information, please view the LICENSE\\n * file that was distributed with this source code.\\n */\\n(function($, window, document) {\\n 'use strict';\\n\\n // TIMEPICKER PUBLIC CLASS DEFINITION\\n var Timepicker = function(element, options) {\\n this.widget = '';\\n this.$element = $(element);\\n this.defaultTime = options.defaultTime;\\n this.disableFocus = options.disableFocus;\\n this.disableMousewheel = options.disableMousewheel;\\n this.isOpen = options.isOpen;\\n this.minuteStep = options.minuteStep;\\n this.modalBackdrop = options.modalBackdrop;\\n this.orientation = options.orientation;\\n this.secondStep = options.secondStep;\\n this.snapToStep = options.snapToStep;\\n this.showInputs = options.showInputs;\\n this.showMeridian = options.showMeridian;\\n this.showSeconds = options.showSeconds;\\n this.template = options.template;\\n this.appendWidgetTo = options.appendWidgetTo;\\n this.showWidgetOnAddonClick = options.showWidgetOnAddonClick;\\n this.icons = options.icons;\\n this.maxHours = options.maxHours;\\n this.explicitMode = options.explicitMode; // If true 123 = 1:23, 12345 = 1:23:45, else invalid.\\n\\n this.handleDocumentClick = function (e) {\\n var self = e.data.scope;\\n // This condition was inspired by bootstrap-datepicker.\\n // The element the timepicker is invoked on is the input but it has a sibling for addon/button.\\n if (!(self.$element.parent().find(e.target).length ||\\n self.$widget.is(e.target) ||\\n self.$widget.find(e.target).length)) {\\n self.hideWidget();\\n }\\n };\\n\\n this._init();\\n };\\n\\n Timepicker.prototype = {\\n\\n constructor: Timepicker,\\n _init: function() {\\n var self = this;\\n\\n if (this.showWidgetOnAddonClick && (this.$element.parent().hasClass('input-group') && this.$element.parent().hasClass('bootstrap-timepicker'))) {\\n this.$element.parent('.input-group.bootstrap-timepicker').find('.input-group-addon').on({\\n 'click.timepicker': $.proxy(this.showWidget, this)\\n });\\n this.$element.on({\\n 'focus.timepicker': $.proxy(this.highlightUnit, this),\\n 'click.timepicker': $.proxy(this.highlightUnit, this),\\n 'keydown.timepicker': $.proxy(this.elementKeydown, this),\\n 'blur.timepicker': $.proxy(this.blurElement, this),\\n 'mousewheel.timepicker DOMMouseScroll.timepicker': $.proxy(this.mousewheel, this)\\n });\\n } else {\\n if (this.template) {\\n this.$element.on({\\n 'focus.timepicker': $.proxy(this.showWidget, this),\\n 'click.timepicker': $.proxy(this.showWidget, this),\\n 'blur.timepicker': $.proxy(this.blurElement, this),\\n 'mousewheel.timepicker DOMMouseScroll.timepicker': $.proxy(this.mousewheel, this)\\n });\\n } else {\\n this.$element.on({\\n 'focus.timepicker': $.proxy(this.highlightUnit, this),\\n 'click.timepicker': $.proxy(this.highlightUnit, this),\\n 'keydown.timepicker': $.proxy(this.elementKeydown, this),\\n 'blur.timepicker': $.proxy(this.blurElement, this),\\n 'mousewheel.timepicker DOMMouseScroll.timepicker': $.proxy(this.mousewheel, this)\\n });\\n }\\n }\\n\\n if (this.template !== false) {\\n this.$widget = $(this.getTemplate()).on('click', $.proxy(this.widgetClick, this));\\n } else {\\n this.$widget = false;\\n }\\n\\n if (this.showInputs && this.$widget !== false) {\\n this.$widget.find('input').each(function() {\\n $(this).on({\\n 'click.timepicker': function() { $(this).select(); },\\n 'keydown.timepicker': $.proxy(self.widgetKeydown, self),\\n 'keyup.timepicker': $.proxy(self.widgetKeyup, self)\\n });\\n });\\n }\\n\\n this.setDefaultTime(this.defaultTime);\\n },\\n\\n blurElement: function() {\\n this.highlightedUnit = null;\\n this.updateFromElementVal();\\n },\\n\\n clear: function() {\\n this.hour = '';\\n this.minute = '';\\n this.second = '';\\n this.meridian = '';\\n\\n this.$element.val('');\\n },\\n\\n decrementHour: function() {\\n if (this.showMeridian) {\\n if (this.hour === 1) {\\n this.hour = 12;\\n } else if (this.hour === 12) {\\n this.hour--;\\n\\n return this.toggleMeridian();\\n } else if (this.hour === 0) {\\n this.hour = 11;\\n\\n return this.toggleMeridian();\\n } else {\\n this.hour--;\\n }\\n } else {\\n if (this.hour <= 0) {\\n this.hour = this.maxHours - 1;\\n } else {\\n this.hour--;\\n }\\n }\\n },\\n\\n decrementMinute: function(step) {\\n var newVal;\\n\\n if (step) {\\n newVal = this.minute - step;\\n } else {\\n newVal = this.minute - this.minuteStep;\\n }\\n\\n if (newVal < 0) {\\n this.decrementHour();\\n this.minute = newVal + 60;\\n } else {\\n this.minute = newVal;\\n }\\n },\\n\\n decrementSecond: function() {\\n var newVal = this.second - this.secondStep;\\n\\n if (newVal < 0) {\\n this.decrementMinute(true);\\n this.second = newVal + 60;\\n } else {\\n this.second = newVal;\\n }\\n },\\n\\n elementKeydown: function(e) {\\n switch (e.which) {\\n case 9: //tab\\n if (e.shiftKey) {\\n if (this.highlightedUnit === 'hour') {\\n this.hideWidget();\\n break;\\n }\\n this.highlightPrevUnit();\\n } else if ((this.showMeridian && this.highlightedUnit === 'meridian') || (this.showSeconds && this.highlightedUnit === 'second') || (!this.showMeridian && !this.showSeconds && this.highlightedUnit ==='minute')) {\\n this.hideWidget();\\n break;\\n } else {\\n this.highlightNextUnit();\\n }\\n e.preventDefault();\\n this.updateFromElementVal();\\n break;\\n case 27: // escape\\n this.updateFromElementVal();\\n break;\\n case 37: // left arrow\\n e.preventDefault();\\n this.highlightPrevUnit();\\n this.updateFromElementVal();\\n break;\\n case 38: // up arrow\\n e.preventDefault();\\n switch (this.highlightedUnit) {\\n case 'hour':\\n this.incrementHour();\\n this.highlightHour();\\n break;\\n case 'minute':\\n this.incrementMinute();\\n this.highlightMinute();\\n break;\\n case 'second':\\n this.incrementSecond();\\n this.highlightSecond();\\n break;\\n case 'meridian':\\n this.toggleMeridian();\\n this.highlightMeridian();\\n break;\\n }\\n this.update();\\n break;\\n case 39: // right arrow\\n e.preventDefault();\\n this.highlightNextUnit();\\n this.updateFromElementVal();\\n break;\\n case 40: // down arrow\\n e.preventDefault();\\n switch (this.highlightedUnit) {\\n case 'hour':\\n this.decrementHour();\\n this.highlightHour();\\n break;\\n case 'minute':\\n this.decrementMinute();\\n this.highlightMinute();\\n break;\\n case 'second':\\n this.decrementSecond();\\n this.highlightSecond();\\n break;\\n case 'meridian':\\n this.toggleMeridian();\\n this.highlightMeridian();\\n break;\\n }\\n\\n this.update();\\n break;\\n }\\n },\\n\\n getCursorPosition: function() {\\n var input = this.$element.get(0);\\n\\n if ('selectionStart' in input) {// Standard-compliant browsers\\n\\n return input.selectionStart;\\n } else if (document.selection) {// IE fix\\n input.focus();\\n var sel = document.selection.createRange(),\\n selLen = document.selection.createRange().text.length;\\n\\n sel.moveStart('character', - input.value.length);\\n\\n return sel.text.length - selLen;\\n }\\n },\\n\\n getTemplate: function() {\\n var template,\\n hourTemplate,\\n minuteTemplate,\\n secondTemplate,\\n meridianTemplate,\\n templateContent;\\n\\n if (this.showInputs) {\\n hourTemplate = '';\\n minuteTemplate = '';\\n secondTemplate = '';\\n meridianTemplate = '';\\n } else {\\n hourTemplate = '';\\n minuteTemplate = '';\\n secondTemplate = '';\\n meridianTemplate = '';\\n }\\n\\n templateContent = ''+\\n ''+\\n ''+\\n ''+\\n ''+\\n (this.showSeconds ?\\n ''+\\n ''\\n : '') +\\n (this.showMeridian ?\\n ''+\\n ''\\n : '') +\\n ''+\\n ''+\\n ' '+\\n ''+\\n ' '+\\n (this.showSeconds ?\\n ''+\\n ''\\n : '') +\\n (this.showMeridian ?\\n ''+\\n ''\\n : '') +\\n ''+\\n ''+\\n ''+\\n ''+\\n ''+\\n (this.showSeconds ?\\n ''+\\n ''\\n : '') +\\n (this.showMeridian ?\\n ''+\\n ''\\n : '') +\\n ''+\\n '
   
'+ hourTemplate +':'+ minuteTemplate +':'+ secondTemplate +' '+ meridianTemplate +'
  
';\\n\\n switch(this.template) {\\n case 'modal':\\n template = '
'+\\n '
'+\\n '×'+\\n '

Pick a Time

'+\\n '
'+\\n '
'+\\n templateContent +\\n '
'+\\n '
'+\\n 'OK'+\\n '
'+\\n '
';\\n break;\\n case 'dropdown':\\n template = '
'+ templateContent +'
';\\n break;\\n }\\n\\n return template;\\n },\\n\\n getTime: function() {\\n if (this.hour === '') {\\n return '';\\n }\\n\\n return this.hour + ':' + (this.minute.toString().length === 1 ? '0' + this.minute : this.minute) + (this.showSeconds ? ':' + (this.second.toString().length === 1 ? '0' + this.second : this.second) : '') + (this.showMeridian ? ' ' + this.meridian : '');\\n },\\n\\n hideWidget: function() {\\n if (this.isOpen === false) {\\n return;\\n }\\n\\n this.$element.trigger({\\n 'type': 'hide.timepicker',\\n 'time': {\\n 'value': this.getTime(),\\n 'hours': this.hour,\\n 'minutes': this.minute,\\n 'seconds': this.second,\\n 'meridian': this.meridian\\n }\\n });\\n\\n if (this.template === 'modal' && this.$widget.modal) {\\n this.$widget.modal('hide');\\n } else {\\n this.$widget.removeClass('open');\\n }\\n\\n $(document).off('mousedown.timepicker, touchend.timepicker', this.handleDocumentClick);\\n\\n this.isOpen = false;\\n // show/hide approach taken by datepicker\\n this.$widget.detach();\\n },\\n\\n highlightUnit: function() {\\n this.position = this.getCursorPosition();\\n if (this.position >= 0 && this.position <= 2) {\\n this.highlightHour();\\n } else if (this.position >= 3 && this.position <= 5) {\\n this.highlightMinute();\\n } else if (this.position >= 6 && this.position <= 8) {\\n if (this.showSeconds) {\\n this.highlightSecond();\\n } else {\\n this.highlightMeridian();\\n }\\n } else if (this.position >= 9 && this.position <= 11) {\\n this.highlightMeridian();\\n }\\n },\\n\\n highlightNextUnit: function() {\\n switch (this.highlightedUnit) {\\n case 'hour':\\n this.highlightMinute();\\n break;\\n case 'minute':\\n if (this.showSeconds) {\\n this.highlightSecond();\\n } else if (this.showMeridian){\\n this.highlightMeridian();\\n } else {\\n this.highlightHour();\\n }\\n break;\\n case 'second':\\n if (this.showMeridian) {\\n this.highlightMeridian();\\n } else {\\n this.highlightHour();\\n }\\n break;\\n case 'meridian':\\n this.highlightHour();\\n break;\\n }\\n },\\n\\n highlightPrevUnit: function() {\\n switch (this.highlightedUnit) {\\n case 'hour':\\n if(this.showMeridian){\\n this.highlightMeridian();\\n } else if (this.showSeconds) {\\n this.highlightSecond();\\n } else {\\n this.highlightMinute();\\n }\\n break;\\n case 'minute':\\n this.highlightHour();\\n break;\\n case 'second':\\n this.highlightMinute();\\n break;\\n case 'meridian':\\n if (this.showSeconds) {\\n this.highlightSecond();\\n } else {\\n this.highlightMinute();\\n }\\n break;\\n }\\n },\\n\\n highlightHour: function() {\\n var $element = this.$element.get(0),\\n self = this;\\n\\n this.highlightedUnit = 'hour';\\n\\n if ($element.setSelectionRange) {\\n setTimeout(function() {\\n if (self.hour < 10) {\\n $element.setSelectionRange(0,1);\\n } else {\\n $element.setSelectionRange(0,2);\\n }\\n }, 0);\\n }\\n },\\n\\n highlightMinute: function() {\\n var $element = this.$element.get(0),\\n self = this;\\n\\n this.highlightedUnit = 'minute';\\n\\n if ($element.setSelectionRange) {\\n setTimeout(function() {\\n if (self.hour < 10) {\\n $element.setSelectionRange(2,4);\\n } else {\\n $element.setSelectionRange(3,5);\\n }\\n }, 0);\\n }\\n },\\n\\n highlightSecond: function() {\\n var $element = this.$element.get(0),\\n self = this;\\n\\n this.highlightedUnit = 'second';\\n\\n if ($element.setSelectionRange) {\\n setTimeout(function() {\\n if (self.hour < 10) {\\n $element.setSelectionRange(5,7);\\n } else {\\n $element.setSelectionRange(6,8);\\n }\\n }, 0);\\n }\\n },\\n\\n highlightMeridian: function() {\\n var $element = this.$element.get(0),\\n self = this;\\n\\n this.highlightedUnit = 'meridian';\\n\\n if ($element.setSelectionRange) {\\n if (this.showSeconds) {\\n setTimeout(function() {\\n if (self.hour < 10) {\\n $element.setSelectionRange(8,10);\\n } else {\\n $element.setSelectionRange(9,11);\\n }\\n }, 0);\\n } else {\\n setTimeout(function() {\\n if (self.hour < 10) {\\n $element.setSelectionRange(5,7);\\n } else {\\n $element.setSelectionRange(6,8);\\n }\\n }, 0);\\n }\\n }\\n },\\n\\n incrementHour: function() {\\n if (this.showMeridian) {\\n if (this.hour === 11) {\\n this.hour++;\\n return this.toggleMeridian();\\n } else if (this.hour === 12) {\\n this.hour = 0;\\n }\\n }\\n if (this.hour === this.maxHours - 1) {\\n this.hour = 0;\\n\\n return;\\n }\\n this.hour++;\\n },\\n\\n incrementMinute: function(step) {\\n var newVal;\\n\\n if (step) {\\n newVal = this.minute + step;\\n } else {\\n newVal = this.minute + this.minuteStep - (this.minute % this.minuteStep);\\n }\\n\\n if (newVal > 59) {\\n this.incrementHour();\\n this.minute = newVal - 60;\\n } else {\\n this.minute = newVal;\\n }\\n },\\n\\n incrementSecond: function() {\\n var newVal = this.second + this.secondStep - (this.second % this.secondStep);\\n\\n if (newVal > 59) {\\n this.incrementMinute(true);\\n this.second = newVal - 60;\\n } else {\\n this.second = newVal;\\n }\\n },\\n\\n mousewheel: function(e) {\\n if (this.disableMousewheel) {\\n return;\\n }\\n\\n e.preventDefault();\\n e.stopPropagation();\\n\\n var delta = e.originalEvent.wheelDelta || -e.originalEvent.detail,\\n scrollTo = null;\\n\\n if (e.type === 'mousewheel') {\\n scrollTo = (e.originalEvent.wheelDelta * -1);\\n }\\n else if (e.type === 'DOMMouseScroll') {\\n scrollTo = 40 * e.originalEvent.detail;\\n }\\n\\n if (scrollTo) {\\n e.preventDefault();\\n $(this).scrollTop(scrollTo + $(this).scrollTop());\\n }\\n\\n switch (this.highlightedUnit) {\\n case 'minute':\\n if (delta > 0) {\\n this.incrementMinute();\\n } else {\\n this.decrementMinute();\\n }\\n this.highlightMinute();\\n break;\\n case 'second':\\n if (delta > 0) {\\n this.incrementSecond();\\n } else {\\n this.decrementSecond();\\n }\\n this.highlightSecond();\\n break;\\n case 'meridian':\\n this.toggleMeridian();\\n this.highlightMeridian();\\n break;\\n default:\\n if (delta > 0) {\\n this.incrementHour();\\n } else {\\n this.decrementHour();\\n }\\n this.highlightHour();\\n break;\\n }\\n\\n return false;\\n },\\n\\n /**\\n * Given a segment value like 43, will round and snap the segment\\n * to the nearest \\\"step\\\", like 45 if step is 15. Segment will\\n * \\\"overflow\\\" to 0 if it's larger than 59 or would otherwise\\n * round up to 60.\\n */\\n changeToNearestStep: function (segment, step) {\\n if (segment % step === 0) {\\n return segment;\\n }\\n if (Math.round((segment % step) / step)) {\\n return (segment + (step - segment % step)) % 60;\\n } else {\\n return segment - segment % step;\\n }\\n },\\n\\n // This method was adapted from bootstrap-datepicker.\\n place : function() {\\n if (this.isInline) {\\n return;\\n }\\n var widgetWidth = this.$widget.outerWidth(), widgetHeight = this.$widget.outerHeight(), visualPadding = 10, windowWidth =\\n $(window).width(), windowHeight = $(window).height(), scrollTop = $(window).scrollTop();\\n\\n var zIndex = parseInt(this.$element.parents().filter(function() { return $(this).css('z-index') !== 'auto'; }).first().css('z-index'), 10) + 10;\\n var offset = this.component ? this.component.parent().offset() : this.$element.offset();\\n var height = this.component ? this.component.outerHeight(true) : this.$element.outerHeight(false);\\n var width = this.component ? this.component.outerWidth(true) : this.$element.outerWidth(false);\\n var left = offset.left, top = offset.top;\\n\\n this.$widget.removeClass('timepicker-orient-top timepicker-orient-bottom timepicker-orient-right timepicker-orient-left');\\n\\n if (this.orientation.x !== 'auto') {\\n this.$widget.addClass('timepicker-orient-' + this.orientation.x);\\n if (this.orientation.x === 'right') {\\n left -= widgetWidth - width;\\n }\\n } else{\\n // auto x orientation is best-placement: if it crosses a window edge, fudge it sideways\\n // Default to left\\n this.$widget.addClass('timepicker-orient-left');\\n if (offset.left < 0) {\\n left -= offset.left - visualPadding;\\n } else if (offset.left + widgetWidth > windowWidth) {\\n left = windowWidth - widgetWidth - visualPadding;\\n }\\n }\\n // auto y orientation is best-situation: top or bottom, no fudging, decision based on which shows more of the widget\\n var yorient = this.orientation.y, topOverflow, bottomOverflow;\\n if (yorient === 'auto') {\\n topOverflow = -scrollTop + offset.top - widgetHeight;\\n bottomOverflow = scrollTop + windowHeight - (offset.top + height + widgetHeight);\\n if (Math.max(topOverflow, bottomOverflow) === bottomOverflow) {\\n yorient = 'top';\\n } else {\\n yorient = 'bottom';\\n }\\n }\\n this.$widget.addClass('timepicker-orient-' + yorient);\\n if (yorient === 'top'){\\n top += height;\\n } else{\\n top -= widgetHeight + parseInt(this.$widget.css('padding-top'), 10);\\n }\\n\\n this.$widget.css({\\n top : top,\\n left : left,\\n zIndex : zIndex\\n });\\n },\\n\\n remove: function() {\\n $('document').off('.timepicker');\\n if (this.$widget) {\\n this.$widget.remove();\\n }\\n delete this.$element.data().timepicker;\\n },\\n\\n setDefaultTime: function(defaultTime) {\\n if (!this.$element.val()) {\\n if (defaultTime === 'current') {\\n var dTime = new Date(),\\n hours = dTime.getHours(),\\n minutes = dTime.getMinutes(),\\n seconds = dTime.getSeconds(),\\n meridian = 'AM';\\n\\n if (seconds !== 0) {\\n seconds = Math.ceil(dTime.getSeconds() / this.secondStep) * this.secondStep;\\n if (seconds === 60) {\\n minutes += 1;\\n seconds = 0;\\n }\\n }\\n\\n if (minutes !== 0) {\\n minutes = Math.ceil(dTime.getMinutes() / this.minuteStep) * this.minuteStep;\\n if (minutes === 60) {\\n hours += 1;\\n minutes = 0;\\n }\\n }\\n\\n if (this.showMeridian) {\\n if (hours === 0) {\\n hours = 12;\\n } else if (hours >= 12) {\\n if (hours > 12) {\\n hours = hours - 12;\\n }\\n meridian = 'PM';\\n } else {\\n meridian = 'AM';\\n }\\n }\\n\\n this.hour = hours;\\n this.minute = minutes;\\n this.second = seconds;\\n this.meridian = meridian;\\n\\n this.update();\\n\\n } else if (defaultTime === false) {\\n this.hour = 0;\\n this.minute = 0;\\n this.second = 0;\\n this.meridian = 'AM';\\n } else {\\n this.setTime(defaultTime);\\n }\\n } else {\\n this.updateFromElementVal();\\n }\\n },\\n\\n setTime: function(time, ignoreWidget) {\\n if (!time) {\\n this.clear();\\n return;\\n }\\n\\n var timeMode,\\n timeArray,\\n hour,\\n minute,\\n second,\\n meridian;\\n\\n if (typeof time === 'object' && time.getMonth){\\n // this is a date object\\n hour = time.getHours();\\n minute = time.getMinutes();\\n second = time.getSeconds();\\n\\n if (this.showMeridian){\\n meridian = 'AM';\\n if (hour > 12){\\n meridian = 'PM';\\n hour = hour % 12;\\n }\\n\\n if (hour === 12){\\n meridian = 'PM';\\n }\\n }\\n } else {\\n timeMode = ((/a/i).test(time) ? 1 : 0) + ((/p/i).test(time) ? 2 : 0); // 0 = none, 1 = AM, 2 = PM, 3 = BOTH.\\n if (timeMode > 2) { // If both are present, fail.\\n this.clear();\\n return;\\n }\\n\\n timeArray = time.replace(/[^0-9\\\\:]/g, '').split(':');\\n\\n hour = timeArray[0] ? timeArray[0].toString() : timeArray.toString();\\n\\n if(this.explicitMode && hour.length > 2 && (hour.length % 2) !== 0 ) {\\n this.clear();\\n return;\\n }\\n\\n minute = timeArray[1] ? timeArray[1].toString() : '';\\n second = timeArray[2] ? timeArray[2].toString() : '';\\n\\n // adaptive time parsing\\n if (hour.length > 4) {\\n second = hour.slice(-2);\\n hour = hour.slice(0, -2);\\n }\\n\\n if (hour.length > 2) {\\n minute = hour.slice(-2);\\n hour = hour.slice(0, -2);\\n }\\n\\n if (minute.length > 2) {\\n second = minute.slice(-2);\\n minute = minute.slice(0, -2);\\n }\\n\\n hour = parseInt(hour, 10);\\n minute = parseInt(minute, 10);\\n second = parseInt(second, 10);\\n\\n if (isNaN(hour)) {\\n hour = 0;\\n }\\n if (isNaN(minute)) {\\n minute = 0;\\n }\\n if (isNaN(second)) {\\n second = 0;\\n }\\n\\n // Adjust the time based upon unit boundary.\\n // NOTE: Negatives will never occur due to time.replace() above.\\n if (second > 59) {\\n second = 59;\\n }\\n\\n if (minute > 59) {\\n minute = 59;\\n }\\n\\n if (hour >= this.maxHours) {\\n // No day/date handling.\\n hour = this.maxHours - 1;\\n }\\n\\n if (this.showMeridian) {\\n if (hour > 12) {\\n // Force PM.\\n timeMode = 2;\\n hour -= 12;\\n }\\n if (!timeMode) {\\n timeMode = 1;\\n }\\n if (hour === 0) {\\n hour = 12; // AM or PM, reset to 12. 0 AM = 12 AM. 0 PM = 12 PM, etc.\\n }\\n meridian = timeMode === 1 ? 'AM' : 'PM';\\n } else if (hour < 12 && timeMode === 2) {\\n hour += 12;\\n } else {\\n if (hour >= this.maxHours) {\\n hour = this.maxHours - 1;\\n } else if ((hour < 0) || (hour === 12 && timeMode === 1)){\\n hour = 0;\\n }\\n }\\n }\\n\\n this.hour = hour;\\n if (this.snapToStep) {\\n this.minute = this.changeToNearestStep(minute, this.minuteStep);\\n this.second = this.changeToNearestStep(second, this.secondStep);\\n } else {\\n this.minute = minute;\\n this.second = second;\\n }\\n this.meridian = meridian;\\n\\n this.update(ignoreWidget);\\n },\\n\\n showWidget: function() {\\n if (this.isOpen) {\\n return;\\n }\\n\\n if (this.$element.is(':disabled')) {\\n return;\\n }\\n\\n // show/hide approach taken by datepicker\\n this.$widget.appendTo(this.appendWidgetTo);\\n $(document).on('mousedown.timepicker, touchend.timepicker', {scope: this}, this.handleDocumentClick);\\n\\n this.$element.trigger({\\n 'type': 'show.timepicker',\\n 'time': {\\n 'value': this.getTime(),\\n 'hours': this.hour,\\n 'minutes': this.minute,\\n 'seconds': this.second,\\n 'meridian': this.meridian\\n }\\n });\\n\\n this.place();\\n if (this.disableFocus) {\\n this.$element.blur();\\n }\\n\\n // widget shouldn't be empty on open\\n if (this.hour === '') {\\n if (this.defaultTime) {\\n this.setDefaultTime(this.defaultTime);\\n } else {\\n this.setTime('0:0:0');\\n }\\n }\\n\\n if (this.template === 'modal' && this.$widget.modal) {\\n this.$widget.modal('show').on('hidden', $.proxy(this.hideWidget, this));\\n } else {\\n if (this.isOpen === false) {\\n this.$widget.addClass('open');\\n }\\n }\\n\\n this.isOpen = true;\\n },\\n\\n toggleMeridian: function() {\\n this.meridian = this.meridian === 'AM' ? 'PM' : 'AM';\\n },\\n\\n update: function(ignoreWidget) {\\n this.updateElement();\\n if (!ignoreWidget) {\\n this.updateWidget();\\n }\\n\\n this.$element.trigger({\\n 'type': 'changeTime.timepicker',\\n 'time': {\\n 'value': this.getTime(),\\n 'hours': this.hour,\\n 'minutes': this.minute,\\n 'seconds': this.second,\\n 'meridian': this.meridian\\n }\\n });\\n },\\n\\n updateElement: function() {\\n this.$element.val(this.getTime()).change();\\n },\\n\\n updateFromElementVal: function() {\\n this.setTime(this.$element.val());\\n },\\n\\n updateWidget: function() {\\n if (this.$widget === false) {\\n return;\\n }\\n\\n var hour = this.hour,\\n minute = this.minute.toString().length === 1 ? '0' + this.minute : this.minute,\\n second = this.second.toString().length === 1 ? '0' + this.second : this.second;\\n\\n if (this.showInputs) {\\n this.$widget.find('input.bootstrap-timepicker-hour').val(hour);\\n this.$widget.find('input.bootstrap-timepicker-minute').val(minute);\\n\\n if (this.showSeconds) {\\n this.$widget.find('input.bootstrap-timepicker-second').val(second);\\n }\\n if (this.showMeridian) {\\n this.$widget.find('input.bootstrap-timepicker-meridian').val(this.meridian);\\n }\\n } else {\\n this.$widget.find('span.bootstrap-timepicker-hour').text(hour);\\n this.$widget.find('span.bootstrap-timepicker-minute').text(minute);\\n\\n if (this.showSeconds) {\\n this.$widget.find('span.bootstrap-timepicker-second').text(second);\\n }\\n if (this.showMeridian) {\\n this.$widget.find('span.bootstrap-timepicker-meridian').text(this.meridian);\\n }\\n }\\n },\\n\\n updateFromWidgetInputs: function() {\\n if (this.$widget === false) {\\n return;\\n }\\n\\n var t = this.$widget.find('input.bootstrap-timepicker-hour').val() + ':' +\\n this.$widget.find('input.bootstrap-timepicker-minute').val() +\\n (this.showSeconds ? ':' + this.$widget.find('input.bootstrap-timepicker-second').val() : '') +\\n (this.showMeridian ? this.$widget.find('input.bootstrap-timepicker-meridian').val() : '')\\n ;\\n\\n this.setTime(t, true);\\n },\\n\\n widgetClick: function(e) {\\n e.stopPropagation();\\n e.preventDefault();\\n\\n var $input = $(e.target),\\n action = $input.closest('a').data('action');\\n\\n if (action) {\\n this[action]();\\n }\\n this.update();\\n\\n if ($input.is('input')) {\\n $input.get(0).setSelectionRange(0,2);\\n }\\n },\\n\\n widgetKeydown: function(e) {\\n var $input = $(e.target),\\n name = $input.attr('class').replace('bootstrap-timepicker-', '');\\n\\n switch (e.which) {\\n case 9: //tab\\n if (e.shiftKey) {\\n if (name === 'hour') {\\n return this.hideWidget();\\n }\\n } else if ((this.showMeridian && name === 'meridian') || (this.showSeconds && name === 'second') || (!this.showMeridian && !this.showSeconds && name === 'minute')) {\\n return this.hideWidget();\\n }\\n break;\\n case 27: // escape\\n this.hideWidget();\\n break;\\n case 38: // up arrow\\n e.preventDefault();\\n switch (name) {\\n case 'hour':\\n this.incrementHour();\\n break;\\n case 'minute':\\n this.incrementMinute();\\n break;\\n case 'second':\\n this.incrementSecond();\\n break;\\n case 'meridian':\\n this.toggleMeridian();\\n break;\\n }\\n this.setTime(this.getTime());\\n $input.get(0).setSelectionRange(0,2);\\n break;\\n case 40: // down arrow\\n e.preventDefault();\\n switch (name) {\\n case 'hour':\\n this.decrementHour();\\n break;\\n case 'minute':\\n this.decrementMinute();\\n break;\\n case 'second':\\n this.decrementSecond();\\n break;\\n case 'meridian':\\n this.toggleMeridian();\\n break;\\n }\\n this.setTime(this.getTime());\\n $input.get(0).setSelectionRange(0,2);\\n break;\\n }\\n },\\n\\n widgetKeyup: function(e) {\\n if ((e.which === 65) || (e.which === 77) || (e.which === 80) || (e.which === 46) || (e.which === 8) || (e.which >= 48 && e.which <= 57) || (e.which >= 96 && e.which <= 105)) {\\n this.updateFromWidgetInputs();\\n }\\n }\\n };\\n\\n //TIMEPICKER PLUGIN DEFINITION\\n $.fn.timepicker = function(option) {\\n var args = Array.apply(null, arguments);\\n args.shift();\\n return this.each(function() {\\n var $this = $(this),\\n data = $this.data('timepicker'),\\n options = typeof option === 'object' && option;\\n\\n if (!data) {\\n $this.data('timepicker', (data = new Timepicker(this, $.extend({}, $.fn.timepicker.defaults, options, $(this).data()))));\\n }\\n\\n if (typeof option === 'string') {\\n data[option].apply(data, args);\\n }\\n });\\n };\\n\\n $.fn.timepicker.defaults = {\\n defaultTime: 'current',\\n disableFocus: false,\\n disableMousewheel: false,\\n isOpen: false,\\n minuteStep: 15,\\n modalBackdrop: false,\\n orientation: { x: 'auto', y: 'auto'},\\n secondStep: 15,\\n snapToStep: false,\\n showSeconds: false,\\n showInputs: true,\\n showMeridian: true,\\n template: 'dropdown',\\n appendWidgetTo: 'body',\\n showWidgetOnAddonClick: true,\\n icons: {\\n up: 'glyphicon glyphicon-chevron-up',\\n down: 'glyphicon glyphicon-chevron-down'\\n },\\n maxHours: 24,\\n explicitMode: false\\n };\\n\\n $.fn.timepicker.Constructor = Timepicker;\\n\\n $(document).on(\\n 'focus.timepicker.data-api click.timepicker.data-api',\\n '[data-provide=\\\"timepicker\\\"]',\\n function(e){\\n var $this = $(this);\\n if ($this.data('timepicker')) {\\n return;\\n }\\n e.preventDefault();\\n // component click requires us to explicitly show it\\n $this.timepicker();\\n }\\n );\\n\\n})(jQuery, window, document);\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// E:/jenkins_home/workspace/_agenda-unco-front-legacy_master/frontend-web/~/raw-loader!E:/jenkins_home/workspace/_agenda-unco-front-legacy_master/frontend-web/~/bootstrap-timepicker/js/bootstrap-timepicker.js\n// module id = ../../../../raw-loader/index.js!../../../../bootstrap-timepicker/js/bootstrap-timepicker.js\n// module chunks = 3","module.exports = \"/*!\\n * jQuery JavaScript Library v3.7.0\\n * https://jquery.com/\\n *\\n * Copyright OpenJS Foundation and other contributors\\n * Released under the MIT license\\n * https://jquery.org/license\\n *\\n * Date: 2023-05-11T18:29Z\\n */\\n( function( global, factory ) {\\n\\n\\t\\\"use strict\\\";\\n\\n\\tif ( typeof module === \\\"object\\\" && typeof module.exports === \\\"object\\\" ) {\\n\\n\\t\\t// For CommonJS and CommonJS-like environments where a proper `window`\\n\\t\\t// is present, execute the factory and get jQuery.\\n\\t\\t// For environments that do not have a `window` with a `document`\\n\\t\\t// (such as Node.js), expose a factory as module.exports.\\n\\t\\t// This accentuates the need for the creation of a real `window`.\\n\\t\\t// e.g. var jQuery = require(\\\"jquery\\\")(window);\\n\\t\\t// See ticket trac-14549 for more info.\\n\\t\\tmodule.exports = global.document ?\\n\\t\\t\\tfactory( global, true ) :\\n\\t\\t\\tfunction( w ) {\\n\\t\\t\\t\\tif ( !w.document ) {\\n\\t\\t\\t\\t\\tthrow new Error( \\\"jQuery requires a window with a document\\\" );\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn factory( w );\\n\\t\\t\\t};\\n\\t} else {\\n\\t\\tfactory( global );\\n\\t}\\n\\n// Pass this if window is not defined yet\\n} )( typeof window !== \\\"undefined\\\" ? window : this, function( window, noGlobal ) {\\n\\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\\n// enough that all such attempts are guarded in a try block.\\n\\\"use strict\\\";\\n\\nvar arr = [];\\n\\nvar getProto = Object.getPrototypeOf;\\n\\nvar slice = arr.slice;\\n\\nvar flat = arr.flat ? function( array ) {\\n\\treturn arr.flat.call( array );\\n} : function( array ) {\\n\\treturn arr.concat.apply( [], array );\\n};\\n\\n\\nvar push = arr.push;\\n\\nvar indexOf = arr.indexOf;\\n\\nvar class2type = {};\\n\\nvar toString = class2type.toString;\\n\\nvar hasOwn = class2type.hasOwnProperty;\\n\\nvar fnToString = hasOwn.toString;\\n\\nvar ObjectFunctionString = fnToString.call( Object );\\n\\nvar support = {};\\n\\nvar isFunction = function isFunction( obj ) {\\n\\n\\t\\t// Support: Chrome <=57, Firefox <=52\\n\\t\\t// In some browsers, typeof returns \\\"function\\\" for HTML elements\\n\\t\\t// (i.e., `typeof document.createElement( \\\"object\\\" ) === \\\"function\\\"`).\\n\\t\\t// We don't want to classify *any* DOM node as a function.\\n\\t\\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\\n\\t\\t// Plus for old WebKit, typeof returns \\\"function\\\" for HTML collections\\n\\t\\t// (e.g., `typeof document.getElementsByTagName(\\\"div\\\") === \\\"function\\\"`). (gh-4756)\\n\\t\\treturn typeof obj === \\\"function\\\" && typeof obj.nodeType !== \\\"number\\\" &&\\n\\t\\t\\ttypeof obj.item !== \\\"function\\\";\\n\\t};\\n\\n\\nvar isWindow = function isWindow( obj ) {\\n\\t\\treturn obj != null && obj === obj.window;\\n\\t};\\n\\n\\nvar document = window.document;\\n\\n\\n\\n\\tvar preservedScriptAttributes = {\\n\\t\\ttype: true,\\n\\t\\tsrc: true,\\n\\t\\tnonce: true,\\n\\t\\tnoModule: true\\n\\t};\\n\\n\\tfunction DOMEval( code, node, doc ) {\\n\\t\\tdoc = doc || document;\\n\\n\\t\\tvar i, val,\\n\\t\\t\\tscript = doc.createElement( \\\"script\\\" );\\n\\n\\t\\tscript.text = code;\\n\\t\\tif ( node ) {\\n\\t\\t\\tfor ( i in preservedScriptAttributes ) {\\n\\n\\t\\t\\t\\t// Support: Firefox 64+, Edge 18+\\n\\t\\t\\t\\t// Some browsers don't support the \\\"nonce\\\" property on scripts.\\n\\t\\t\\t\\t// On the other hand, just using `getAttribute` is not enough as\\n\\t\\t\\t\\t// the `nonce` attribute is reset to an empty string whenever it\\n\\t\\t\\t\\t// becomes browsing-context connected.\\n\\t\\t\\t\\t// See https://github.com/whatwg/html/issues/2369\\n\\t\\t\\t\\t// See https://html.spec.whatwg.org/#nonce-attributes\\n\\t\\t\\t\\t// The `node.getAttribute` check was added for the sake of\\n\\t\\t\\t\\t// `jQuery.globalEval` so that it can fake a nonce-containing node\\n\\t\\t\\t\\t// via an object.\\n\\t\\t\\t\\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\\n\\t\\t\\t\\tif ( val ) {\\n\\t\\t\\t\\t\\tscript.setAttribute( i, val );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tdoc.head.appendChild( script ).parentNode.removeChild( script );\\n\\t}\\n\\n\\nfunction toType( obj ) {\\n\\tif ( obj == null ) {\\n\\t\\treturn obj + \\\"\\\";\\n\\t}\\n\\n\\t// Support: Android <=2.3 only (functionish RegExp)\\n\\treturn typeof obj === \\\"object\\\" || typeof obj === \\\"function\\\" ?\\n\\t\\tclass2type[ toString.call( obj ) ] || \\\"object\\\" :\\n\\t\\ttypeof obj;\\n}\\n/* global Symbol */\\n// Defining this global in .eslintrc.json would create a danger of using the global\\n// unguarded in another place, it seems safer to define global only for this module\\n\\n\\n\\nvar version = \\\"3.7.0\\\",\\n\\n\\trhtmlSuffix = /HTML$/i,\\n\\n\\t// Define a local copy of jQuery\\n\\tjQuery = function( selector, context ) {\\n\\n\\t\\t// The jQuery object is actually just the init constructor 'enhanced'\\n\\t\\t// Need init if jQuery is called (just allow error to be thrown if not included)\\n\\t\\treturn new jQuery.fn.init( selector, context );\\n\\t};\\n\\njQuery.fn = jQuery.prototype = {\\n\\n\\t// The current version of jQuery being used\\n\\tjquery: version,\\n\\n\\tconstructor: jQuery,\\n\\n\\t// The default length of a jQuery object is 0\\n\\tlength: 0,\\n\\n\\ttoArray: function() {\\n\\t\\treturn slice.call( this );\\n\\t},\\n\\n\\t// Get the Nth element in the matched element set OR\\n\\t// Get the whole matched element set as a clean array\\n\\tget: function( num ) {\\n\\n\\t\\t// Return all the elements in a clean array\\n\\t\\tif ( num == null ) {\\n\\t\\t\\treturn slice.call( this );\\n\\t\\t}\\n\\n\\t\\t// Return just the one element from the set\\n\\t\\treturn num < 0 ? this[ num + this.length ] : this[ num ];\\n\\t},\\n\\n\\t// Take an array of elements and push it onto the stack\\n\\t// (returning the new matched element set)\\n\\tpushStack: function( elems ) {\\n\\n\\t\\t// Build a new jQuery matched element set\\n\\t\\tvar ret = jQuery.merge( this.constructor(), elems );\\n\\n\\t\\t// Add the old object onto the stack (as a reference)\\n\\t\\tret.prevObject = this;\\n\\n\\t\\t// Return the newly-formed element set\\n\\t\\treturn ret;\\n\\t},\\n\\n\\t// Execute a callback for every element in the matched set.\\n\\teach: function( callback ) {\\n\\t\\treturn jQuery.each( this, callback );\\n\\t},\\n\\n\\tmap: function( callback ) {\\n\\t\\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\\n\\t\\t\\treturn callback.call( elem, i, elem );\\n\\t\\t} ) );\\n\\t},\\n\\n\\tslice: function() {\\n\\t\\treturn this.pushStack( slice.apply( this, arguments ) );\\n\\t},\\n\\n\\tfirst: function() {\\n\\t\\treturn this.eq( 0 );\\n\\t},\\n\\n\\tlast: function() {\\n\\t\\treturn this.eq( -1 );\\n\\t},\\n\\n\\teven: function() {\\n\\t\\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\\n\\t\\t\\treturn ( i + 1 ) % 2;\\n\\t\\t} ) );\\n\\t},\\n\\n\\todd: function() {\\n\\t\\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\\n\\t\\t\\treturn i % 2;\\n\\t\\t} ) );\\n\\t},\\n\\n\\teq: function( i ) {\\n\\t\\tvar len = this.length,\\n\\t\\t\\tj = +i + ( i < 0 ? len : 0 );\\n\\t\\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\\n\\t},\\n\\n\\tend: function() {\\n\\t\\treturn this.prevObject || this.constructor();\\n\\t},\\n\\n\\t// For internal use only.\\n\\t// Behaves like an Array's method, not like a jQuery method.\\n\\tpush: push,\\n\\tsort: arr.sort,\\n\\tsplice: arr.splice\\n};\\n\\njQuery.extend = jQuery.fn.extend = function() {\\n\\tvar options, name, src, copy, copyIsArray, clone,\\n\\t\\ttarget = arguments[ 0 ] || {},\\n\\t\\ti = 1,\\n\\t\\tlength = arguments.length,\\n\\t\\tdeep = false;\\n\\n\\t// Handle a deep copy situation\\n\\tif ( typeof target === \\\"boolean\\\" ) {\\n\\t\\tdeep = target;\\n\\n\\t\\t// Skip the boolean and the target\\n\\t\\ttarget = arguments[ i ] || {};\\n\\t\\ti++;\\n\\t}\\n\\n\\t// Handle case when target is a string or something (possible in deep copy)\\n\\tif ( typeof target !== \\\"object\\\" && !isFunction( target ) ) {\\n\\t\\ttarget = {};\\n\\t}\\n\\n\\t// Extend jQuery itself if only one argument is passed\\n\\tif ( i === length ) {\\n\\t\\ttarget = this;\\n\\t\\ti--;\\n\\t}\\n\\n\\tfor ( ; i < length; i++ ) {\\n\\n\\t\\t// Only deal with non-null/undefined values\\n\\t\\tif ( ( options = arguments[ i ] ) != null ) {\\n\\n\\t\\t\\t// Extend the base object\\n\\t\\t\\tfor ( name in options ) {\\n\\t\\t\\t\\tcopy = options[ name ];\\n\\n\\t\\t\\t\\t// Prevent Object.prototype pollution\\n\\t\\t\\t\\t// Prevent never-ending loop\\n\\t\\t\\t\\tif ( name === \\\"__proto__\\\" || target === copy ) {\\n\\t\\t\\t\\t\\tcontinue;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Recurse if we're merging plain objects or arrays\\n\\t\\t\\t\\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\\n\\t\\t\\t\\t\\t( copyIsArray = Array.isArray( copy ) ) ) ) {\\n\\t\\t\\t\\t\\tsrc = target[ name ];\\n\\n\\t\\t\\t\\t\\t// Ensure proper type for the source value\\n\\t\\t\\t\\t\\tif ( copyIsArray && !Array.isArray( src ) ) {\\n\\t\\t\\t\\t\\t\\tclone = [];\\n\\t\\t\\t\\t\\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\\n\\t\\t\\t\\t\\t\\tclone = {};\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\tclone = src;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tcopyIsArray = false;\\n\\n\\t\\t\\t\\t\\t// Never move original objects, clone them\\n\\t\\t\\t\\t\\ttarget[ name ] = jQuery.extend( deep, clone, copy );\\n\\n\\t\\t\\t\\t// Don't bring in undefined values\\n\\t\\t\\t\\t} else if ( copy !== undefined ) {\\n\\t\\t\\t\\t\\ttarget[ name ] = copy;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// Return the modified object\\n\\treturn target;\\n};\\n\\njQuery.extend( {\\n\\n\\t// Unique for each copy of jQuery on the page\\n\\texpando: \\\"jQuery\\\" + ( version + Math.random() ).replace( /\\\\D/g, \\\"\\\" ),\\n\\n\\t// Assume jQuery is ready without the ready module\\n\\tisReady: true,\\n\\n\\terror: function( msg ) {\\n\\t\\tthrow new Error( msg );\\n\\t},\\n\\n\\tnoop: function() {},\\n\\n\\tisPlainObject: function( obj ) {\\n\\t\\tvar proto, Ctor;\\n\\n\\t\\t// Detect obvious negatives\\n\\t\\t// Use toString instead of jQuery.type to catch host objects\\n\\t\\tif ( !obj || toString.call( obj ) !== \\\"[object Object]\\\" ) {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\n\\t\\tproto = getProto( obj );\\n\\n\\t\\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\\n\\t\\tif ( !proto ) {\\n\\t\\t\\treturn true;\\n\\t\\t}\\n\\n\\t\\t// Objects with prototype are plain iff they were constructed by a global Object function\\n\\t\\tCtor = hasOwn.call( proto, \\\"constructor\\\" ) && proto.constructor;\\n\\t\\treturn typeof Ctor === \\\"function\\\" && fnToString.call( Ctor ) === ObjectFunctionString;\\n\\t},\\n\\n\\tisEmptyObject: function( obj ) {\\n\\t\\tvar name;\\n\\n\\t\\tfor ( name in obj ) {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t\\treturn true;\\n\\t},\\n\\n\\t// Evaluates a script in a provided context; falls back to the global one\\n\\t// if not specified.\\n\\tglobalEval: function( code, options, doc ) {\\n\\t\\tDOMEval( code, { nonce: options && options.nonce }, doc );\\n\\t},\\n\\n\\teach: function( obj, callback ) {\\n\\t\\tvar length, i = 0;\\n\\n\\t\\tif ( isArrayLike( obj ) ) {\\n\\t\\t\\tlength = obj.length;\\n\\t\\t\\tfor ( ; i < length; i++ ) {\\n\\t\\t\\t\\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\tfor ( i in obj ) {\\n\\t\\t\\t\\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn obj;\\n\\t},\\n\\n\\n\\t// Retrieve the text value of an array of DOM nodes\\n\\ttext: function( elem ) {\\n\\t\\tvar node,\\n\\t\\t\\tret = \\\"\\\",\\n\\t\\t\\ti = 0,\\n\\t\\t\\tnodeType = elem.nodeType;\\n\\n\\t\\tif ( !nodeType ) {\\n\\n\\t\\t\\t// If no nodeType, this is expected to be an array\\n\\t\\t\\twhile ( ( node = elem[ i++ ] ) ) {\\n\\n\\t\\t\\t\\t// Do not traverse comment nodes\\n\\t\\t\\t\\tret += jQuery.text( node );\\n\\t\\t\\t}\\n\\t\\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\\n\\t\\t\\treturn elem.textContent;\\n\\t\\t} else if ( nodeType === 3 || nodeType === 4 ) {\\n\\t\\t\\treturn elem.nodeValue;\\n\\t\\t}\\n\\n\\t\\t// Do not include comment or processing instruction nodes\\n\\n\\t\\treturn ret;\\n\\t},\\n\\n\\t// results is for internal usage only\\n\\tmakeArray: function( arr, results ) {\\n\\t\\tvar ret = results || [];\\n\\n\\t\\tif ( arr != null ) {\\n\\t\\t\\tif ( isArrayLike( Object( arr ) ) ) {\\n\\t\\t\\t\\tjQuery.merge( ret,\\n\\t\\t\\t\\t\\ttypeof arr === \\\"string\\\" ?\\n\\t\\t\\t\\t\\t\\t[ arr ] : arr\\n\\t\\t\\t\\t);\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tpush.call( ret, arr );\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn ret;\\n\\t},\\n\\n\\tinArray: function( elem, arr, i ) {\\n\\t\\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\\n\\t},\\n\\n\\tisXMLDoc: function( elem ) {\\n\\t\\tvar namespace = elem && elem.namespaceURI,\\n\\t\\t\\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\\n\\n\\t\\t// Assume HTML when documentElement doesn't yet exist, such as inside\\n\\t\\t// document fragments.\\n\\t\\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \\\"HTML\\\" );\\n\\t},\\n\\n\\t// Support: Android <=4.0 only, PhantomJS 1 only\\n\\t// push.apply(_, arraylike) throws on ancient WebKit\\n\\tmerge: function( first, second ) {\\n\\t\\tvar len = +second.length,\\n\\t\\t\\tj = 0,\\n\\t\\t\\ti = first.length;\\n\\n\\t\\tfor ( ; j < len; j++ ) {\\n\\t\\t\\tfirst[ i++ ] = second[ j ];\\n\\t\\t}\\n\\n\\t\\tfirst.length = i;\\n\\n\\t\\treturn first;\\n\\t},\\n\\n\\tgrep: function( elems, callback, invert ) {\\n\\t\\tvar callbackInverse,\\n\\t\\t\\tmatches = [],\\n\\t\\t\\ti = 0,\\n\\t\\t\\tlength = elems.length,\\n\\t\\t\\tcallbackExpect = !invert;\\n\\n\\t\\t// Go through the array, only saving the items\\n\\t\\t// that pass the validator function\\n\\t\\tfor ( ; i < length; i++ ) {\\n\\t\\t\\tcallbackInverse = !callback( elems[ i ], i );\\n\\t\\t\\tif ( callbackInverse !== callbackExpect ) {\\n\\t\\t\\t\\tmatches.push( elems[ i ] );\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn matches;\\n\\t},\\n\\n\\t// arg is for internal usage only\\n\\tmap: function( elems, callback, arg ) {\\n\\t\\tvar length, value,\\n\\t\\t\\ti = 0,\\n\\t\\t\\tret = [];\\n\\n\\t\\t// Go through the array, translating each of the items to their new values\\n\\t\\tif ( isArrayLike( elems ) ) {\\n\\t\\t\\tlength = elems.length;\\n\\t\\t\\tfor ( ; i < length; i++ ) {\\n\\t\\t\\t\\tvalue = callback( elems[ i ], i, arg );\\n\\n\\t\\t\\t\\tif ( value != null ) {\\n\\t\\t\\t\\t\\tret.push( value );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t// Go through every key on the object,\\n\\t\\t} else {\\n\\t\\t\\tfor ( i in elems ) {\\n\\t\\t\\t\\tvalue = callback( elems[ i ], i, arg );\\n\\n\\t\\t\\t\\tif ( value != null ) {\\n\\t\\t\\t\\t\\tret.push( value );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Flatten any nested arrays\\n\\t\\treturn flat( ret );\\n\\t},\\n\\n\\t// A global GUID counter for objects\\n\\tguid: 1,\\n\\n\\t// jQuery.support is not used in Core but other projects attach their\\n\\t// properties to it so it needs to exist.\\n\\tsupport: support\\n} );\\n\\nif ( typeof Symbol === \\\"function\\\" ) {\\n\\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\\n}\\n\\n// Populate the class2type map\\njQuery.each( \\\"Boolean Number String Function Array Date RegExp Object Error Symbol\\\".split( \\\" \\\" ),\\n\\tfunction( _i, name ) {\\n\\t\\tclass2type[ \\\"[object \\\" + name + \\\"]\\\" ] = name.toLowerCase();\\n\\t} );\\n\\nfunction isArrayLike( obj ) {\\n\\n\\t// Support: real iOS 8.2 only (not reproducible in simulator)\\n\\t// `in` check used to prevent JIT error (gh-2145)\\n\\t// hasOwn isn't used here due to false negatives\\n\\t// regarding Nodelist length in IE\\n\\tvar length = !!obj && \\\"length\\\" in obj && obj.length,\\n\\t\\ttype = toType( obj );\\n\\n\\tif ( isFunction( obj ) || isWindow( obj ) ) {\\n\\t\\treturn false;\\n\\t}\\n\\n\\treturn type === \\\"array\\\" || length === 0 ||\\n\\t\\ttypeof length === \\\"number\\\" && length > 0 && ( length - 1 ) in obj;\\n}\\n\\n\\nfunction nodeName( elem, name ) {\\n\\n\\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\\n\\n}\\nvar pop = arr.pop;\\n\\n\\nvar sort = arr.sort;\\n\\n\\nvar splice = arr.splice;\\n\\n\\nvar whitespace = \\\"[\\\\\\\\x20\\\\\\\\t\\\\\\\\r\\\\\\\\n\\\\\\\\f]\\\";\\n\\n\\nvar rtrimCSS = new RegExp(\\n\\t\\\"^\\\" + whitespace + \\\"+|((?:^|[^\\\\\\\\\\\\\\\\])(?:\\\\\\\\\\\\\\\\.)*)\\\" + whitespace + \\\"+$\\\",\\n\\t\\\"g\\\"\\n);\\n\\n\\n\\n\\n// Note: an element does not contain itself\\njQuery.contains = function( a, b ) {\\n\\tvar bup = b && b.parentNode;\\n\\n\\treturn a === bup || !!( bup && bup.nodeType === 1 && (\\n\\n\\t\\t// Support: IE 9 - 11+\\n\\t\\t// IE doesn't have `contains` on SVG.\\n\\t\\ta.contains ?\\n\\t\\t\\ta.contains( bup ) :\\n\\t\\t\\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\\n\\t) );\\n};\\n\\n\\n\\n\\n// CSS string/identifier serialization\\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\\nvar rcssescape = /([\\\\0-\\\\x1f\\\\x7f]|^-?\\\\d)|^-$|[^\\\\x80-\\\\uFFFF\\\\w-]/g;\\n\\nfunction fcssescape( ch, asCodePoint ) {\\n\\tif ( asCodePoint ) {\\n\\n\\t\\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\\n\\t\\tif ( ch === \\\"\\\\0\\\" ) {\\n\\t\\t\\treturn \\\"\\\\uFFFD\\\";\\n\\t\\t}\\n\\n\\t\\t// Control characters and (dependent upon position) numbers get escaped as code points\\n\\t\\treturn ch.slice( 0, -1 ) + \\\"\\\\\\\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \\\" \\\";\\n\\t}\\n\\n\\t// Other potentially-special ASCII characters get backslash-escaped\\n\\treturn \\\"\\\\\\\\\\\" + ch;\\n}\\n\\njQuery.escapeSelector = function( sel ) {\\n\\treturn ( sel + \\\"\\\" ).replace( rcssescape, fcssescape );\\n};\\n\\n\\n\\n\\nvar preferredDoc = document,\\n\\tpushNative = push;\\n\\n( function() {\\n\\nvar i,\\n\\tExpr,\\n\\toutermostContext,\\n\\tsortInput,\\n\\thasDuplicate,\\n\\tpush = pushNative,\\n\\n\\t// Local document vars\\n\\tdocument,\\n\\tdocumentElement,\\n\\tdocumentIsHTML,\\n\\trbuggyQSA,\\n\\tmatches,\\n\\n\\t// Instance-specific data\\n\\texpando = jQuery.expando,\\n\\tdirruns = 0,\\n\\tdone = 0,\\n\\tclassCache = createCache(),\\n\\ttokenCache = createCache(),\\n\\tcompilerCache = createCache(),\\n\\tnonnativeSelectorCache = createCache(),\\n\\tsortOrder = function( a, b ) {\\n\\t\\tif ( a === b ) {\\n\\t\\t\\thasDuplicate = true;\\n\\t\\t}\\n\\t\\treturn 0;\\n\\t},\\n\\n\\tbooleans = \\\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\\\" +\\n\\t\\t\\\"loop|multiple|open|readonly|required|scoped\\\",\\n\\n\\t// Regular expressions\\n\\n\\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\\n\\tidentifier = \\\"(?:\\\\\\\\\\\\\\\\[\\\\\\\\da-fA-F]{1,6}\\\" + whitespace +\\n\\t\\t\\\"?|\\\\\\\\\\\\\\\\[^\\\\\\\\r\\\\\\\\n\\\\\\\\f]|[\\\\\\\\w-]|[^\\\\0-\\\\\\\\x7f])+\\\",\\n\\n\\t// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\\n\\tattributes = \\\"\\\\\\\\[\\\" + whitespace + \\\"*(\\\" + identifier + \\\")(?:\\\" + whitespace +\\n\\n\\t\\t// Operator (capture 2)\\n\\t\\t\\\"*([*^$|!~]?=)\\\" + whitespace +\\n\\n\\t\\t// \\\"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\\\"\\n\\t\\t\\\"*(?:'((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\'])*)'|\\\\\\\"((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\\\\\\\\"])*)\\\\\\\"|(\\\" + identifier + \\\"))|)\\\" +\\n\\t\\twhitespace + \\\"*\\\\\\\\]\\\",\\n\\n\\tpseudos = \\\":(\\\" + identifier + \\\")(?:\\\\\\\\((\\\" +\\n\\n\\t\\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\\n\\t\\t// 1. quoted (capture 3; capture 4 or capture 5)\\n\\t\\t\\\"('((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\'])*)'|\\\\\\\"((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\\\\\\\\"])*)\\\\\\\")|\\\" +\\n\\n\\t\\t// 2. simple (capture 6)\\n\\t\\t\\\"((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\()[\\\\\\\\]]|\\\" + attributes + \\\")*)|\\\" +\\n\\n\\t\\t// 3. anything else (capture 2)\\n\\t\\t\\\".*\\\" +\\n\\t\\t\\\")\\\\\\\\)|)\\\",\\n\\n\\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\\n\\trwhitespace = new RegExp( whitespace + \\\"+\\\", \\\"g\\\" ),\\n\\n\\trcomma = new RegExp( \\\"^\\\" + whitespace + \\\"*,\\\" + whitespace + \\\"*\\\" ),\\n\\trleadingCombinator = new RegExp( \\\"^\\\" + whitespace + \\\"*([>+~]|\\\" + whitespace + \\\")\\\" +\\n\\t\\twhitespace + \\\"*\\\" ),\\n\\trdescend = new RegExp( whitespace + \\\"|>\\\" ),\\n\\n\\trpseudo = new RegExp( pseudos ),\\n\\tridentifier = new RegExp( \\\"^\\\" + identifier + \\\"$\\\" ),\\n\\n\\tmatchExpr = {\\n\\t\\tID: new RegExp( \\\"^#(\\\" + identifier + \\\")\\\" ),\\n\\t\\tCLASS: new RegExp( \\\"^\\\\\\\\.(\\\" + identifier + \\\")\\\" ),\\n\\t\\tTAG: new RegExp( \\\"^(\\\" + identifier + \\\"|[*])\\\" ),\\n\\t\\tATTR: new RegExp( \\\"^\\\" + attributes ),\\n\\t\\tPSEUDO: new RegExp( \\\"^\\\" + pseudos ),\\n\\t\\tCHILD: new RegExp(\\n\\t\\t\\t\\\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\\\\\(\\\" +\\n\\t\\t\\t\\twhitespace + \\\"*(even|odd|(([+-]|)(\\\\\\\\d*)n|)\\\" + whitespace + \\\"*(?:([+-]|)\\\" +\\n\\t\\t\\t\\twhitespace + \\\"*(\\\\\\\\d+)|))\\\" + whitespace + \\\"*\\\\\\\\)|)\\\", \\\"i\\\" ),\\n\\t\\tbool: new RegExp( \\\"^(?:\\\" + booleans + \\\")$\\\", \\\"i\\\" ),\\n\\n\\t\\t// For use in libraries implementing .is()\\n\\t\\t// We use this for POS matching in `select`\\n\\t\\tneedsContext: new RegExp( \\\"^\\\" + whitespace +\\n\\t\\t\\t\\\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\\\\\(\\\" + whitespace +\\n\\t\\t\\t\\\"*((?:-\\\\\\\\d)?\\\\\\\\d*)\\\" + whitespace + \\\"*\\\\\\\\)|)(?=[^-]|$)\\\", \\\"i\\\" )\\n\\t},\\n\\n\\trinputs = /^(?:input|select|textarea|button)$/i,\\n\\trheader = /^h\\\\d$/i,\\n\\n\\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\\n\\trquickExpr = /^(?:#([\\\\w-]+)|(\\\\w+)|\\\\.([\\\\w-]+))$/,\\n\\n\\trsibling = /[+~]/,\\n\\n\\t// CSS escapes\\n\\t// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\\n\\trunescape = new RegExp( \\\"\\\\\\\\\\\\\\\\[\\\\\\\\da-fA-F]{1,6}\\\" + whitespace +\\n\\t\\t\\\"?|\\\\\\\\\\\\\\\\([^\\\\\\\\r\\\\\\\\n\\\\\\\\f])\\\", \\\"g\\\" ),\\n\\tfunescape = function( escape, nonHex ) {\\n\\t\\tvar high = \\\"0x\\\" + escape.slice( 1 ) - 0x10000;\\n\\n\\t\\tif ( nonHex ) {\\n\\n\\t\\t\\t// Strip the backslash prefix from a non-hex escape sequence\\n\\t\\t\\treturn nonHex;\\n\\t\\t}\\n\\n\\t\\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\\n\\t\\t// Support: IE <=11+\\n\\t\\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\\n\\t\\t// surrogate pair\\n\\t\\treturn high < 0 ?\\n\\t\\t\\tString.fromCharCode( high + 0x10000 ) :\\n\\t\\t\\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\\n\\t},\\n\\n\\t// Used for iframes; see `setDocument`.\\n\\t// Support: IE 9 - 11+, Edge 12 - 18+\\n\\t// Removing the function wrapper causes a \\\"Permission Denied\\\"\\n\\t// error in IE/Edge.\\n\\tunloadHandler = function() {\\n\\t\\tsetDocument();\\n\\t},\\n\\n\\tinDisabledFieldset = addCombinator(\\n\\t\\tfunction( elem ) {\\n\\t\\t\\treturn elem.disabled === true && nodeName( elem, \\\"fieldset\\\" );\\n\\t\\t},\\n\\t\\t{ dir: \\\"parentNode\\\", next: \\\"legend\\\" }\\n\\t);\\n\\n// Support: IE <=9 only\\n// Accessing document.activeElement can throw unexpectedly\\n// https://bugs.jquery.com/ticket/13393\\nfunction safeActiveElement() {\\n\\ttry {\\n\\t\\treturn document.activeElement;\\n\\t} catch ( err ) { }\\n}\\n\\n// Optimize for push.apply( _, NodeList )\\ntry {\\n\\tpush.apply(\\n\\t\\t( arr = slice.call( preferredDoc.childNodes ) ),\\n\\t\\tpreferredDoc.childNodes\\n\\t);\\n\\n\\t// Support: Android <=4.0\\n\\t// Detect silently failing push.apply\\n\\t// eslint-disable-next-line no-unused-expressions\\n\\tarr[ preferredDoc.childNodes.length ].nodeType;\\n} catch ( e ) {\\n\\tpush = {\\n\\t\\tapply: function( target, els ) {\\n\\t\\t\\tpushNative.apply( target, slice.call( els ) );\\n\\t\\t},\\n\\t\\tcall: function( target ) {\\n\\t\\t\\tpushNative.apply( target, slice.call( arguments, 1 ) );\\n\\t\\t}\\n\\t};\\n}\\n\\nfunction find( selector, context, results, seed ) {\\n\\tvar m, i, elem, nid, match, groups, newSelector,\\n\\t\\tnewContext = context && context.ownerDocument,\\n\\n\\t\\t// nodeType defaults to 9, since context defaults to document\\n\\t\\tnodeType = context ? context.nodeType : 9;\\n\\n\\tresults = results || [];\\n\\n\\t// Return early from calls with invalid selector or context\\n\\tif ( typeof selector !== \\\"string\\\" || !selector ||\\n\\t\\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\\n\\n\\t\\treturn results;\\n\\t}\\n\\n\\t// Try to shortcut find operations (as opposed to filters) in HTML documents\\n\\tif ( !seed ) {\\n\\t\\tsetDocument( context );\\n\\t\\tcontext = context || document;\\n\\n\\t\\tif ( documentIsHTML ) {\\n\\n\\t\\t\\t// If the selector is sufficiently simple, try using a \\\"get*By*\\\" DOM method\\n\\t\\t\\t// (excepting DocumentFragment context, where the methods don't exist)\\n\\t\\t\\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\\n\\n\\t\\t\\t\\t// ID selector\\n\\t\\t\\t\\tif ( ( m = match[ 1 ] ) ) {\\n\\n\\t\\t\\t\\t\\t// Document context\\n\\t\\t\\t\\t\\tif ( nodeType === 9 ) {\\n\\t\\t\\t\\t\\t\\tif ( ( elem = context.getElementById( m ) ) ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Support: IE 9 only\\n\\t\\t\\t\\t\\t\\t\\t// getElementById can match elements by name instead of ID\\n\\t\\t\\t\\t\\t\\t\\tif ( elem.id === m ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tpush.call( results, elem );\\n\\t\\t\\t\\t\\t\\t\\t\\treturn results;\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\treturn results;\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Element context\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t// Support: IE 9 only\\n\\t\\t\\t\\t\\t\\t// getElementById can match elements by name instead of ID\\n\\t\\t\\t\\t\\t\\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\\n\\t\\t\\t\\t\\t\\t\\tfind.contains( context, elem ) &&\\n\\t\\t\\t\\t\\t\\t\\telem.id === m ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tpush.call( results, elem );\\n\\t\\t\\t\\t\\t\\t\\treturn results;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Type selector\\n\\t\\t\\t\\t} else if ( match[ 2 ] ) {\\n\\t\\t\\t\\t\\tpush.apply( results, context.getElementsByTagName( selector ) );\\n\\t\\t\\t\\t\\treturn results;\\n\\n\\t\\t\\t\\t// Class selector\\n\\t\\t\\t\\t} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {\\n\\t\\t\\t\\t\\tpush.apply( results, context.getElementsByClassName( m ) );\\n\\t\\t\\t\\t\\treturn results;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Take advantage of querySelectorAll\\n\\t\\t\\tif ( !nonnativeSelectorCache[ selector + \\\" \\\" ] &&\\n\\t\\t\\t\\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\\n\\n\\t\\t\\t\\tnewSelector = selector;\\n\\t\\t\\t\\tnewContext = context;\\n\\n\\t\\t\\t\\t// qSA considers elements outside a scoping root when evaluating child or\\n\\t\\t\\t\\t// descendant combinators, which is not what we want.\\n\\t\\t\\t\\t// In such cases, we work around the behavior by prefixing every selector in the\\n\\t\\t\\t\\t// list with an ID selector referencing the scope context.\\n\\t\\t\\t\\t// The technique has to be used as well when a leading combinator is used\\n\\t\\t\\t\\t// as such selectors are not recognized by querySelectorAll.\\n\\t\\t\\t\\t// Thanks to Andrew Dupont for this technique.\\n\\t\\t\\t\\tif ( nodeType === 1 &&\\n\\t\\t\\t\\t\\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\\n\\n\\t\\t\\t\\t\\t// Expand context for sibling selectors\\n\\t\\t\\t\\t\\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\\n\\t\\t\\t\\t\\t\\tcontext;\\n\\n\\t\\t\\t\\t\\t// We can use :scope instead of the ID hack if the browser\\n\\t\\t\\t\\t\\t// supports it & if we're not changing the context.\\n\\t\\t\\t\\t\\t// Support: IE 11+, Edge 17 - 18+\\n\\t\\t\\t\\t\\t// IE/Edge sometimes throw a \\\"Permission denied\\\" error when\\n\\t\\t\\t\\t\\t// strict-comparing two documents; shallow comparisons work.\\n\\t\\t\\t\\t\\t// eslint-disable-next-line eqeqeq\\n\\t\\t\\t\\t\\tif ( newContext != context || !support.scope ) {\\n\\n\\t\\t\\t\\t\\t\\t// Capture the context ID, setting it first if necessary\\n\\t\\t\\t\\t\\t\\tif ( ( nid = context.getAttribute( \\\"id\\\" ) ) ) {\\n\\t\\t\\t\\t\\t\\t\\tnid = jQuery.escapeSelector( nid );\\n\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\tcontext.setAttribute( \\\"id\\\", ( nid = expando ) );\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Prefix every selector in the list\\n\\t\\t\\t\\t\\tgroups = tokenize( selector );\\n\\t\\t\\t\\t\\ti = groups.length;\\n\\t\\t\\t\\t\\twhile ( i-- ) {\\n\\t\\t\\t\\t\\t\\tgroups[ i ] = ( nid ? \\\"#\\\" + nid : \\\":scope\\\" ) + \\\" \\\" +\\n\\t\\t\\t\\t\\t\\t\\ttoSelector( groups[ i ] );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tnewSelector = groups.join( \\\",\\\" );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\tpush.apply( results,\\n\\t\\t\\t\\t\\t\\tnewContext.querySelectorAll( newSelector )\\n\\t\\t\\t\\t\\t);\\n\\t\\t\\t\\t\\treturn results;\\n\\t\\t\\t\\t} catch ( qsaError ) {\\n\\t\\t\\t\\t\\tnonnativeSelectorCache( selector, true );\\n\\t\\t\\t\\t} finally {\\n\\t\\t\\t\\t\\tif ( nid === expando ) {\\n\\t\\t\\t\\t\\t\\tcontext.removeAttribute( \\\"id\\\" );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// All others\\n\\treturn select( selector.replace( rtrimCSS, \\\"$1\\\" ), context, results, seed );\\n}\\n\\n/**\\n * Create key-value caches of limited size\\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\\n *\\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\\n *\\tdeleting the oldest entry\\n */\\nfunction createCache() {\\n\\tvar keys = [];\\n\\n\\tfunction cache( key, value ) {\\n\\n\\t\\t// Use (key + \\\" \\\") to avoid collision with native prototype properties\\n\\t\\t// (see https://github.com/jquery/sizzle/issues/157)\\n\\t\\tif ( keys.push( key + \\\" \\\" ) > Expr.cacheLength ) {\\n\\n\\t\\t\\t// Only keep the most recent entries\\n\\t\\t\\tdelete cache[ keys.shift() ];\\n\\t\\t}\\n\\t\\treturn ( cache[ key + \\\" \\\" ] = value );\\n\\t}\\n\\treturn cache;\\n}\\n\\n/**\\n * Mark a function for special use by jQuery selector module\\n * @param {Function} fn The function to mark\\n */\\nfunction markFunction( fn ) {\\n\\tfn[ expando ] = true;\\n\\treturn fn;\\n}\\n\\n/**\\n * Support testing using an element\\n * @param {Function} fn Passed the created element and returns a boolean result\\n */\\nfunction assert( fn ) {\\n\\tvar el = document.createElement( \\\"fieldset\\\" );\\n\\n\\ttry {\\n\\t\\treturn !!fn( el );\\n\\t} catch ( e ) {\\n\\t\\treturn false;\\n\\t} finally {\\n\\n\\t\\t// Remove from its parent by default\\n\\t\\tif ( el.parentNode ) {\\n\\t\\t\\tel.parentNode.removeChild( el );\\n\\t\\t}\\n\\n\\t\\t// release memory in IE\\n\\t\\tel = null;\\n\\t}\\n}\\n\\n/**\\n * Returns a function to use in pseudos for input types\\n * @param {String} type\\n */\\nfunction createInputPseudo( type ) {\\n\\treturn function( elem ) {\\n\\t\\treturn nodeName( elem, \\\"input\\\" ) && elem.type === type;\\n\\t};\\n}\\n\\n/**\\n * Returns a function to use in pseudos for buttons\\n * @param {String} type\\n */\\nfunction createButtonPseudo( type ) {\\n\\treturn function( elem ) {\\n\\t\\treturn ( nodeName( elem, \\\"input\\\" ) || nodeName( elem, \\\"button\\\" ) ) &&\\n\\t\\t\\telem.type === type;\\n\\t};\\n}\\n\\n/**\\n * Returns a function to use in pseudos for :enabled/:disabled\\n * @param {Boolean} disabled true for :disabled; false for :enabled\\n */\\nfunction createDisabledPseudo( disabled ) {\\n\\n\\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\\n\\treturn function( elem ) {\\n\\n\\t\\t// Only certain elements can match :enabled or :disabled\\n\\t\\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\\n\\t\\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\\n\\t\\tif ( \\\"form\\\" in elem ) {\\n\\n\\t\\t\\t// Check for inherited disabledness on relevant non-disabled elements:\\n\\t\\t\\t// * listed form-associated elements in a disabled fieldset\\n\\t\\t\\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\\n\\t\\t\\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\\n\\t\\t\\t// * option elements in a disabled optgroup\\n\\t\\t\\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\\n\\t\\t\\t// All such elements have a \\\"form\\\" property.\\n\\t\\t\\tif ( elem.parentNode && elem.disabled === false ) {\\n\\n\\t\\t\\t\\t// Option elements defer to a parent optgroup if present\\n\\t\\t\\t\\tif ( \\\"label\\\" in elem ) {\\n\\t\\t\\t\\t\\tif ( \\\"label\\\" in elem.parentNode ) {\\n\\t\\t\\t\\t\\t\\treturn elem.parentNode.disabled === disabled;\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\treturn elem.disabled === disabled;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Support: IE 6 - 11+\\n\\t\\t\\t\\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\\n\\t\\t\\t\\treturn elem.isDisabled === disabled ||\\n\\n\\t\\t\\t\\t\\t// Where there is no isDisabled, check manually\\n\\t\\t\\t\\t\\telem.isDisabled !== !disabled &&\\n\\t\\t\\t\\t\\t\\tinDisabledFieldset( elem ) === disabled;\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn elem.disabled === disabled;\\n\\n\\t\\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\\n\\t\\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\\n\\t\\t// even exist on them, let alone have a boolean value.\\n\\t\\t} else if ( \\\"label\\\" in elem ) {\\n\\t\\t\\treturn elem.disabled === disabled;\\n\\t\\t}\\n\\n\\t\\t// Remaining elements are neither :enabled nor :disabled\\n\\t\\treturn false;\\n\\t};\\n}\\n\\n/**\\n * Returns a function to use in pseudos for positionals\\n * @param {Function} fn\\n */\\nfunction createPositionalPseudo( fn ) {\\n\\treturn markFunction( function( argument ) {\\n\\t\\targument = +argument;\\n\\t\\treturn markFunction( function( seed, matches ) {\\n\\t\\t\\tvar j,\\n\\t\\t\\t\\tmatchIndexes = fn( [], seed.length, argument ),\\n\\t\\t\\t\\ti = matchIndexes.length;\\n\\n\\t\\t\\t// Match elements found at the specified indexes\\n\\t\\t\\twhile ( i-- ) {\\n\\t\\t\\t\\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\\n\\t\\t\\t\\t\\tseed[ j ] = !( matches[ j ] = seed[ j ] );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t} );\\n}\\n\\n/**\\n * Checks a node for validity as a jQuery selector context\\n * @param {Element|Object=} context\\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\\n */\\nfunction testContext( context ) {\\n\\treturn context && typeof context.getElementsByTagName !== \\\"undefined\\\" && context;\\n}\\n\\n/**\\n * Sets document-related variables once based on the current document\\n * @param {Element|Object} [node] An element or document object to use to set the document\\n * @returns {Object} Returns the current document\\n */\\nfunction setDocument( node ) {\\n\\tvar subWindow,\\n\\t\\tdoc = node ? node.ownerDocument || node : preferredDoc;\\n\\n\\t// Return early if doc is invalid or already selected\\n\\t// Support: IE 11+, Edge 17 - 18+\\n\\t// IE/Edge sometimes throw a \\\"Permission denied\\\" error when strict-comparing\\n\\t// two documents; shallow comparisons work.\\n\\t// eslint-disable-next-line eqeqeq\\n\\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\\n\\t\\treturn document;\\n\\t}\\n\\n\\t// Update global variables\\n\\tdocument = doc;\\n\\tdocumentElement = document.documentElement;\\n\\tdocumentIsHTML = !jQuery.isXMLDoc( document );\\n\\n\\t// Support: iOS 7 only, IE 9 - 11+\\n\\t// Older browsers didn't support unprefixed `matches`.\\n\\tmatches = documentElement.matches ||\\n\\t\\tdocumentElement.webkitMatchesSelector ||\\n\\t\\tdocumentElement.msMatchesSelector;\\n\\n\\t// Support: IE 9 - 11+, Edge 12 - 18+\\n\\t// Accessing iframe documents after unload throws \\\"permission denied\\\" errors (see trac-13936)\\n\\t// Support: IE 11+, Edge 17 - 18+\\n\\t// IE/Edge sometimes throw a \\\"Permission denied\\\" error when strict-comparing\\n\\t// two documents; shallow comparisons work.\\n\\t// eslint-disable-next-line eqeqeq\\n\\tif ( preferredDoc != document &&\\n\\t\\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\\n\\n\\t\\t// Support: IE 9 - 11+, Edge 12 - 18+\\n\\t\\tsubWindow.addEventListener( \\\"unload\\\", unloadHandler );\\n\\t}\\n\\n\\t// Support: IE <10\\n\\t// Check if getElementById returns elements by name\\n\\t// The broken getElementById methods don't pick up programmatically-set names,\\n\\t// so use a roundabout getElementsByName test\\n\\tsupport.getById = assert( function( el ) {\\n\\t\\tdocumentElement.appendChild( el ).id = jQuery.expando;\\n\\t\\treturn !document.getElementsByName ||\\n\\t\\t\\t!document.getElementsByName( jQuery.expando ).length;\\n\\t} );\\n\\n\\t// Support: IE 9 only\\n\\t// Check to see if it's possible to do matchesSelector\\n\\t// on a disconnected node.\\n\\tsupport.disconnectedMatch = assert( function( el ) {\\n\\t\\treturn matches.call( el, \\\"*\\\" );\\n\\t} );\\n\\n\\t// Support: IE 9 - 11+, Edge 12 - 18+\\n\\t// IE/Edge don't support the :scope pseudo-class.\\n\\tsupport.scope = assert( function() {\\n\\t\\treturn document.querySelectorAll( \\\":scope\\\" );\\n\\t} );\\n\\n\\t// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\\n\\t// Make sure the `:has()` argument is parsed unforgivingly.\\n\\t// We include `*` in the test to detect buggy implementations that are\\n\\t// _selectively_ forgiving (specifically when the list includes at least\\n\\t// one valid selector).\\n\\t// Note that we treat complete lack of support for `:has()` as if it were\\n\\t// spec-compliant support, which is fine because use of `:has()` in such\\n\\t// environments will fail in the qSA path and fall back to jQuery traversal\\n\\t// anyway.\\n\\tsupport.cssHas = assert( function() {\\n\\t\\ttry {\\n\\t\\t\\tdocument.querySelector( \\\":has(*,:jqfake)\\\" );\\n\\t\\t\\treturn false;\\n\\t\\t} catch ( e ) {\\n\\t\\t\\treturn true;\\n\\t\\t}\\n\\t} );\\n\\n\\t// ID filter and find\\n\\tif ( support.getById ) {\\n\\t\\tExpr.filter.ID = function( id ) {\\n\\t\\t\\tvar attrId = id.replace( runescape, funescape );\\n\\t\\t\\treturn function( elem ) {\\n\\t\\t\\t\\treturn elem.getAttribute( \\\"id\\\" ) === attrId;\\n\\t\\t\\t};\\n\\t\\t};\\n\\t\\tExpr.find.ID = function( id, context ) {\\n\\t\\t\\tif ( typeof context.getElementById !== \\\"undefined\\\" && documentIsHTML ) {\\n\\t\\t\\t\\tvar elem = context.getElementById( id );\\n\\t\\t\\t\\treturn elem ? [ elem ] : [];\\n\\t\\t\\t}\\n\\t\\t};\\n\\t} else {\\n\\t\\tExpr.filter.ID = function( id ) {\\n\\t\\t\\tvar attrId = id.replace( runescape, funescape );\\n\\t\\t\\treturn function( elem ) {\\n\\t\\t\\t\\tvar node = typeof elem.getAttributeNode !== \\\"undefined\\\" &&\\n\\t\\t\\t\\t\\telem.getAttributeNode( \\\"id\\\" );\\n\\t\\t\\t\\treturn node && node.value === attrId;\\n\\t\\t\\t};\\n\\t\\t};\\n\\n\\t\\t// Support: IE 6 - 7 only\\n\\t\\t// getElementById is not reliable as a find shortcut\\n\\t\\tExpr.find.ID = function( id, context ) {\\n\\t\\t\\tif ( typeof context.getElementById !== \\\"undefined\\\" && documentIsHTML ) {\\n\\t\\t\\t\\tvar node, i, elems,\\n\\t\\t\\t\\t\\telem = context.getElementById( id );\\n\\n\\t\\t\\t\\tif ( elem ) {\\n\\n\\t\\t\\t\\t\\t// Verify the id attribute\\n\\t\\t\\t\\t\\tnode = elem.getAttributeNode( \\\"id\\\" );\\n\\t\\t\\t\\t\\tif ( node && node.value === id ) {\\n\\t\\t\\t\\t\\t\\treturn [ elem ];\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Fall back on getElementsByName\\n\\t\\t\\t\\t\\telems = context.getElementsByName( id );\\n\\t\\t\\t\\t\\ti = 0;\\n\\t\\t\\t\\t\\twhile ( ( elem = elems[ i++ ] ) ) {\\n\\t\\t\\t\\t\\t\\tnode = elem.getAttributeNode( \\\"id\\\" );\\n\\t\\t\\t\\t\\t\\tif ( node && node.value === id ) {\\n\\t\\t\\t\\t\\t\\t\\treturn [ elem ];\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn [];\\n\\t\\t\\t}\\n\\t\\t};\\n\\t}\\n\\n\\t// Tag\\n\\tExpr.find.TAG = function( tag, context ) {\\n\\t\\tif ( typeof context.getElementsByTagName !== \\\"undefined\\\" ) {\\n\\t\\t\\treturn context.getElementsByTagName( tag );\\n\\n\\t\\t// DocumentFragment nodes don't have gEBTN\\n\\t\\t} else {\\n\\t\\t\\treturn context.querySelectorAll( tag );\\n\\t\\t}\\n\\t};\\n\\n\\t// Class\\n\\tExpr.find.CLASS = function( className, context ) {\\n\\t\\tif ( typeof context.getElementsByClassName !== \\\"undefined\\\" && documentIsHTML ) {\\n\\t\\t\\treturn context.getElementsByClassName( className );\\n\\t\\t}\\n\\t};\\n\\n\\t/* QSA/matchesSelector\\n\\t---------------------------------------------------------------------- */\\n\\n\\t// QSA and matchesSelector support\\n\\n\\trbuggyQSA = [];\\n\\n\\t// Build QSA regex\\n\\t// Regex strategy adopted from Diego Perini\\n\\tassert( function( el ) {\\n\\n\\t\\tvar input;\\n\\n\\t\\tdocumentElement.appendChild( el ).innerHTML =\\n\\t\\t\\t\\\"\\\" +\\n\\t\\t\\t\\\"\\\";\\n\\n\\t\\t// Support: iOS <=7 - 8 only\\n\\t\\t// Boolean attributes and \\\"value\\\" are not treated correctly in some XML documents\\n\\t\\tif ( !el.querySelectorAll( \\\"[selected]\\\" ).length ) {\\n\\t\\t\\trbuggyQSA.push( \\\"\\\\\\\\[\\\" + whitespace + \\\"*(?:value|\\\" + booleans + \\\")\\\" );\\n\\t\\t}\\n\\n\\t\\t// Support: iOS <=7 - 8 only\\n\\t\\tif ( !el.querySelectorAll( \\\"[id~=\\\" + expando + \\\"-]\\\" ).length ) {\\n\\t\\t\\trbuggyQSA.push( \\\"~=\\\" );\\n\\t\\t}\\n\\n\\t\\t// Support: iOS 8 only\\n\\t\\t// https://bugs.webkit.org/show_bug.cgi?id=136851\\n\\t\\t// In-page `selector#id sibling-combinator selector` fails\\n\\t\\tif ( !el.querySelectorAll( \\\"a#\\\" + expando + \\\"+*\\\" ).length ) {\\n\\t\\t\\trbuggyQSA.push( \\\".#.+[+~]\\\" );\\n\\t\\t}\\n\\n\\t\\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\\n\\t\\t// In some of the document kinds, these selectors wouldn't work natively.\\n\\t\\t// This is probably OK but for backwards compatibility we want to maintain\\n\\t\\t// handling them through jQuery traversal in jQuery 3.x.\\n\\t\\tif ( !el.querySelectorAll( \\\":checked\\\" ).length ) {\\n\\t\\t\\trbuggyQSA.push( \\\":checked\\\" );\\n\\t\\t}\\n\\n\\t\\t// Support: Windows 8 Native Apps\\n\\t\\t// The type and name attributes are restricted during .innerHTML assignment\\n\\t\\tinput = document.createElement( \\\"input\\\" );\\n\\t\\tinput.setAttribute( \\\"type\\\", \\\"hidden\\\" );\\n\\t\\tel.appendChild( input ).setAttribute( \\\"name\\\", \\\"D\\\" );\\n\\n\\t\\t// Support: IE 9 - 11+\\n\\t\\t// IE's :disabled selector does not pick up the children of disabled fieldsets\\n\\t\\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\\n\\t\\t// In some of the document kinds, these selectors wouldn't work natively.\\n\\t\\t// This is probably OK but for backwards compatibility we want to maintain\\n\\t\\t// handling them through jQuery traversal in jQuery 3.x.\\n\\t\\tdocumentElement.appendChild( el ).disabled = true;\\n\\t\\tif ( el.querySelectorAll( \\\":disabled\\\" ).length !== 2 ) {\\n\\t\\t\\trbuggyQSA.push( \\\":enabled\\\", \\\":disabled\\\" );\\n\\t\\t}\\n\\n\\t\\t// Support: IE 11+, Edge 15 - 18+\\n\\t\\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\\n\\t\\t// Adding a temporary attribute to the document before the selection works\\n\\t\\t// around the issue.\\n\\t\\t// Interestingly, IE 10 & older don't seem to have the issue.\\n\\t\\tinput = document.createElement( \\\"input\\\" );\\n\\t\\tinput.setAttribute( \\\"name\\\", \\\"\\\" );\\n\\t\\tel.appendChild( input );\\n\\t\\tif ( !el.querySelectorAll( \\\"[name='']\\\" ).length ) {\\n\\t\\t\\trbuggyQSA.push( \\\"\\\\\\\\[\\\" + whitespace + \\\"*name\\\" + whitespace + \\\"*=\\\" +\\n\\t\\t\\t\\twhitespace + \\\"*(?:''|\\\\\\\"\\\\\\\")\\\" );\\n\\t\\t}\\n\\t} );\\n\\n\\tif ( !support.cssHas ) {\\n\\n\\t\\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\\n\\t\\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\\n\\t\\t// pseudo-classes inside `:has()` (such as `:has(:contains(\\\"Foo\\\"))`)\\n\\t\\t// in browsers that parse the `:has()` argument as a forgiving selector list.\\n\\t\\t// https://drafts.csswg.org/selectors/#relational now requires the argument\\n\\t\\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\\n\\t\\trbuggyQSA.push( \\\":has\\\" );\\n\\t}\\n\\n\\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \\\"|\\\" ) );\\n\\n\\t/* Sorting\\n\\t---------------------------------------------------------------------- */\\n\\n\\t// Document order sorting\\n\\tsortOrder = function( a, b ) {\\n\\n\\t\\t// Flag for duplicate removal\\n\\t\\tif ( a === b ) {\\n\\t\\t\\thasDuplicate = true;\\n\\t\\t\\treturn 0;\\n\\t\\t}\\n\\n\\t\\t// Sort on method existence if only one input has compareDocumentPosition\\n\\t\\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\\n\\t\\tif ( compare ) {\\n\\t\\t\\treturn compare;\\n\\t\\t}\\n\\n\\t\\t// Calculate position if both inputs belong to the same document\\n\\t\\t// Support: IE 11+, Edge 17 - 18+\\n\\t\\t// IE/Edge sometimes throw a \\\"Permission denied\\\" error when strict-comparing\\n\\t\\t// two documents; shallow comparisons work.\\n\\t\\t// eslint-disable-next-line eqeqeq\\n\\t\\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\\n\\t\\t\\ta.compareDocumentPosition( b ) :\\n\\n\\t\\t\\t// Otherwise we know they are disconnected\\n\\t\\t\\t1;\\n\\n\\t\\t// Disconnected nodes\\n\\t\\tif ( compare & 1 ||\\n\\t\\t\\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\\n\\n\\t\\t\\t// Choose the first element that is related to our preferred document\\n\\t\\t\\t// Support: IE 11+, Edge 17 - 18+\\n\\t\\t\\t// IE/Edge sometimes throw a \\\"Permission denied\\\" error when strict-comparing\\n\\t\\t\\t// two documents; shallow comparisons work.\\n\\t\\t\\t// eslint-disable-next-line eqeqeq\\n\\t\\t\\tif ( a === document || a.ownerDocument == preferredDoc &&\\n\\t\\t\\t\\tfind.contains( preferredDoc, a ) ) {\\n\\t\\t\\t\\treturn -1;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Support: IE 11+, Edge 17 - 18+\\n\\t\\t\\t// IE/Edge sometimes throw a \\\"Permission denied\\\" error when strict-comparing\\n\\t\\t\\t// two documents; shallow comparisons work.\\n\\t\\t\\t// eslint-disable-next-line eqeqeq\\n\\t\\t\\tif ( b === document || b.ownerDocument == preferredDoc &&\\n\\t\\t\\t\\tfind.contains( preferredDoc, b ) ) {\\n\\t\\t\\t\\treturn 1;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Maintain original order\\n\\t\\t\\treturn sortInput ?\\n\\t\\t\\t\\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\\n\\t\\t\\t\\t0;\\n\\t\\t}\\n\\n\\t\\treturn compare & 4 ? -1 : 1;\\n\\t};\\n\\n\\treturn document;\\n}\\n\\nfind.matches = function( expr, elements ) {\\n\\treturn find( expr, null, null, elements );\\n};\\n\\nfind.matchesSelector = function( elem, expr ) {\\n\\tsetDocument( elem );\\n\\n\\tif ( documentIsHTML &&\\n\\t\\t!nonnativeSelectorCache[ expr + \\\" \\\" ] &&\\n\\t\\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\\n\\n\\t\\ttry {\\n\\t\\t\\tvar ret = matches.call( elem, expr );\\n\\n\\t\\t\\t// IE 9's matchesSelector returns false on disconnected nodes\\n\\t\\t\\tif ( ret || support.disconnectedMatch ||\\n\\n\\t\\t\\t\\t\\t// As well, disconnected nodes are said to be in a document\\n\\t\\t\\t\\t\\t// fragment in IE 9\\n\\t\\t\\t\\t\\telem.document && elem.document.nodeType !== 11 ) {\\n\\t\\t\\t\\treturn ret;\\n\\t\\t\\t}\\n\\t\\t} catch ( e ) {\\n\\t\\t\\tnonnativeSelectorCache( expr, true );\\n\\t\\t}\\n\\t}\\n\\n\\treturn find( expr, document, null, [ elem ] ).length > 0;\\n};\\n\\nfind.contains = function( context, elem ) {\\n\\n\\t// Set document vars if needed\\n\\t// Support: IE 11+, Edge 17 - 18+\\n\\t// IE/Edge sometimes throw a \\\"Permission denied\\\" error when strict-comparing\\n\\t// two documents; shallow comparisons work.\\n\\t// eslint-disable-next-line eqeqeq\\n\\tif ( ( context.ownerDocument || context ) != document ) {\\n\\t\\tsetDocument( context );\\n\\t}\\n\\treturn jQuery.contains( context, elem );\\n};\\n\\n\\nfind.attr = function( elem, name ) {\\n\\n\\t// Set document vars if needed\\n\\t// Support: IE 11+, Edge 17 - 18+\\n\\t// IE/Edge sometimes throw a \\\"Permission denied\\\" error when strict-comparing\\n\\t// two documents; shallow comparisons work.\\n\\t// eslint-disable-next-line eqeqeq\\n\\tif ( ( elem.ownerDocument || elem ) != document ) {\\n\\t\\tsetDocument( elem );\\n\\t}\\n\\n\\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\\n\\n\\t\\t// Don't get fooled by Object.prototype properties (see trac-13807)\\n\\t\\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\\n\\t\\t\\tfn( elem, name, !documentIsHTML ) :\\n\\t\\t\\tundefined;\\n\\n\\tif ( val !== undefined ) {\\n\\t\\treturn val;\\n\\t}\\n\\n\\treturn elem.getAttribute( name );\\n};\\n\\nfind.error = function( msg ) {\\n\\tthrow new Error( \\\"Syntax error, unrecognized expression: \\\" + msg );\\n};\\n\\n/**\\n * Document sorting and removing duplicates\\n * @param {ArrayLike} results\\n */\\njQuery.uniqueSort = function( results ) {\\n\\tvar elem,\\n\\t\\tduplicates = [],\\n\\t\\tj = 0,\\n\\t\\ti = 0;\\n\\n\\t// Unless we *know* we can detect duplicates, assume their presence\\n\\t//\\n\\t// Support: Android <=4.0+\\n\\t// Testing for detecting duplicates is unpredictable so instead assume we can't\\n\\t// depend on duplicate detection in all browsers without a stable sort.\\n\\thasDuplicate = !support.sortStable;\\n\\tsortInput = !support.sortStable && slice.call( results, 0 );\\n\\tsort.call( results, sortOrder );\\n\\n\\tif ( hasDuplicate ) {\\n\\t\\twhile ( ( elem = results[ i++ ] ) ) {\\n\\t\\t\\tif ( elem === results[ i ] ) {\\n\\t\\t\\t\\tj = duplicates.push( i );\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\twhile ( j-- ) {\\n\\t\\t\\tsplice.call( results, duplicates[ j ], 1 );\\n\\t\\t}\\n\\t}\\n\\n\\t// Clear input after sorting to release objects\\n\\t// See https://github.com/jquery/sizzle/pull/225\\n\\tsortInput = null;\\n\\n\\treturn results;\\n};\\n\\njQuery.fn.uniqueSort = function() {\\n\\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\\n};\\n\\nExpr = jQuery.expr = {\\n\\n\\t// Can be adjusted by the user\\n\\tcacheLength: 50,\\n\\n\\tcreatePseudo: markFunction,\\n\\n\\tmatch: matchExpr,\\n\\n\\tattrHandle: {},\\n\\n\\tfind: {},\\n\\n\\trelative: {\\n\\t\\t\\\">\\\": { dir: \\\"parentNode\\\", first: true },\\n\\t\\t\\\" \\\": { dir: \\\"parentNode\\\" },\\n\\t\\t\\\"+\\\": { dir: \\\"previousSibling\\\", first: true },\\n\\t\\t\\\"~\\\": { dir: \\\"previousSibling\\\" }\\n\\t},\\n\\n\\tpreFilter: {\\n\\t\\tATTR: function( match ) {\\n\\t\\t\\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\\n\\n\\t\\t\\t// Move the given value to match[3] whether quoted or unquoted\\n\\t\\t\\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \\\"\\\" )\\n\\t\\t\\t\\t.replace( runescape, funescape );\\n\\n\\t\\t\\tif ( match[ 2 ] === \\\"~=\\\" ) {\\n\\t\\t\\t\\tmatch[ 3 ] = \\\" \\\" + match[ 3 ] + \\\" \\\";\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn match.slice( 0, 4 );\\n\\t\\t},\\n\\n\\t\\tCHILD: function( match ) {\\n\\n\\t\\t\\t/* matches from matchExpr[\\\"CHILD\\\"]\\n\\t\\t\\t\\t1 type (only|nth|...)\\n\\t\\t\\t\\t2 what (child|of-type)\\n\\t\\t\\t\\t3 argument (even|odd|\\\\d*|\\\\d*n([+-]\\\\d+)?|...)\\n\\t\\t\\t\\t4 xn-component of xn+y argument ([+-]?\\\\d*n|)\\n\\t\\t\\t\\t5 sign of xn-component\\n\\t\\t\\t\\t6 x of xn-component\\n\\t\\t\\t\\t7 sign of y-component\\n\\t\\t\\t\\t8 y of y-component\\n\\t\\t\\t*/\\n\\t\\t\\tmatch[ 1 ] = match[ 1 ].toLowerCase();\\n\\n\\t\\t\\tif ( match[ 1 ].slice( 0, 3 ) === \\\"nth\\\" ) {\\n\\n\\t\\t\\t\\t// nth-* requires argument\\n\\t\\t\\t\\tif ( !match[ 3 ] ) {\\n\\t\\t\\t\\t\\tfind.error( match[ 0 ] );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// numeric x and y parameters for Expr.filter.CHILD\\n\\t\\t\\t\\t// remember that false/true cast respectively to 0/1\\n\\t\\t\\t\\tmatch[ 4 ] = +( match[ 4 ] ?\\n\\t\\t\\t\\t\\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\\n\\t\\t\\t\\t\\t2 * ( match[ 3 ] === \\\"even\\\" || match[ 3 ] === \\\"odd\\\" )\\n\\t\\t\\t\\t);\\n\\t\\t\\t\\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \\\"odd\\\" );\\n\\n\\t\\t\\t// other types prohibit arguments\\n\\t\\t\\t} else if ( match[ 3 ] ) {\\n\\t\\t\\t\\tfind.error( match[ 0 ] );\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn match;\\n\\t\\t},\\n\\n\\t\\tPSEUDO: function( match ) {\\n\\t\\t\\tvar excess,\\n\\t\\t\\t\\tunquoted = !match[ 6 ] && match[ 2 ];\\n\\n\\t\\t\\tif ( matchExpr.CHILD.test( match[ 0 ] ) ) {\\n\\t\\t\\t\\treturn null;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Accept quoted arguments as-is\\n\\t\\t\\tif ( match[ 3 ] ) {\\n\\t\\t\\t\\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \\\"\\\";\\n\\n\\t\\t\\t// Strip excess characters from unquoted arguments\\n\\t\\t\\t} else if ( unquoted && rpseudo.test( unquoted ) &&\\n\\n\\t\\t\\t\\t// Get excess from tokenize (recursively)\\n\\t\\t\\t\\t( excess = tokenize( unquoted, true ) ) &&\\n\\n\\t\\t\\t\\t// advance to the next closing parenthesis\\n\\t\\t\\t\\t( excess = unquoted.indexOf( \\\")\\\", unquoted.length - excess ) - unquoted.length ) ) {\\n\\n\\t\\t\\t\\t// excess is a negative index\\n\\t\\t\\t\\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\\n\\t\\t\\t\\tmatch[ 2 ] = unquoted.slice( 0, excess );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Return only captures needed by the pseudo filter method (type and argument)\\n\\t\\t\\treturn match.slice( 0, 3 );\\n\\t\\t}\\n\\t},\\n\\n\\tfilter: {\\n\\n\\t\\tTAG: function( nodeNameSelector ) {\\n\\t\\t\\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\\n\\t\\t\\treturn nodeNameSelector === \\\"*\\\" ?\\n\\t\\t\\t\\tfunction() {\\n\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t} :\\n\\t\\t\\t\\tfunction( elem ) {\\n\\t\\t\\t\\t\\treturn nodeName( elem, expectedNodeName );\\n\\t\\t\\t\\t};\\n\\t\\t},\\n\\n\\t\\tCLASS: function( className ) {\\n\\t\\t\\tvar pattern = classCache[ className + \\\" \\\" ];\\n\\n\\t\\t\\treturn pattern ||\\n\\t\\t\\t\\t( pattern = new RegExp( \\\"(^|\\\" + whitespace + \\\")\\\" + className +\\n\\t\\t\\t\\t\\t\\\"(\\\" + whitespace + \\\"|$)\\\" ) ) &&\\n\\t\\t\\t\\tclassCache( className, function( elem ) {\\n\\t\\t\\t\\t\\treturn pattern.test(\\n\\t\\t\\t\\t\\t\\ttypeof elem.className === \\\"string\\\" && elem.className ||\\n\\t\\t\\t\\t\\t\\t\\ttypeof elem.getAttribute !== \\\"undefined\\\" &&\\n\\t\\t\\t\\t\\t\\t\\t\\telem.getAttribute( \\\"class\\\" ) ||\\n\\t\\t\\t\\t\\t\\t\\t\\\"\\\"\\n\\t\\t\\t\\t\\t);\\n\\t\\t\\t\\t} );\\n\\t\\t},\\n\\n\\t\\tATTR: function( name, operator, check ) {\\n\\t\\t\\treturn function( elem ) {\\n\\t\\t\\t\\tvar result = find.attr( elem, name );\\n\\n\\t\\t\\t\\tif ( result == null ) {\\n\\t\\t\\t\\t\\treturn operator === \\\"!=\\\";\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ( !operator ) {\\n\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tresult += \\\"\\\";\\n\\n\\t\\t\\t\\tif ( operator === \\\"=\\\" ) {\\n\\t\\t\\t\\t\\treturn result === check;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ( operator === \\\"!=\\\" ) {\\n\\t\\t\\t\\t\\treturn result !== check;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ( operator === \\\"^=\\\" ) {\\n\\t\\t\\t\\t\\treturn check && result.indexOf( check ) === 0;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ( operator === \\\"*=\\\" ) {\\n\\t\\t\\t\\t\\treturn check && result.indexOf( check ) > -1;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ( operator === \\\"$=\\\" ) {\\n\\t\\t\\t\\t\\treturn check && result.slice( -check.length ) === check;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ( operator === \\\"~=\\\" ) {\\n\\t\\t\\t\\t\\treturn ( \\\" \\\" + result.replace( rwhitespace, \\\" \\\" ) + \\\" \\\" )\\n\\t\\t\\t\\t\\t\\t.indexOf( check ) > -1;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ( operator === \\\"|=\\\" ) {\\n\\t\\t\\t\\t\\treturn result === check || result.slice( 0, check.length + 1 ) === check + \\\"-\\\";\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn false;\\n\\t\\t\\t};\\n\\t\\t},\\n\\n\\t\\tCHILD: function( type, what, _argument, first, last ) {\\n\\t\\t\\tvar simple = type.slice( 0, 3 ) !== \\\"nth\\\",\\n\\t\\t\\t\\tforward = type.slice( -4 ) !== \\\"last\\\",\\n\\t\\t\\t\\tofType = what === \\\"of-type\\\";\\n\\n\\t\\t\\treturn first === 1 && last === 0 ?\\n\\n\\t\\t\\t\\t// Shortcut for :nth-*(n)\\n\\t\\t\\t\\tfunction( elem ) {\\n\\t\\t\\t\\t\\treturn !!elem.parentNode;\\n\\t\\t\\t\\t} :\\n\\n\\t\\t\\t\\tfunction( elem, _context, xml ) {\\n\\t\\t\\t\\t\\tvar cache, outerCache, node, nodeIndex, start,\\n\\t\\t\\t\\t\\t\\tdir = simple !== forward ? \\\"nextSibling\\\" : \\\"previousSibling\\\",\\n\\t\\t\\t\\t\\t\\tparent = elem.parentNode,\\n\\t\\t\\t\\t\\t\\tname = ofType && elem.nodeName.toLowerCase(),\\n\\t\\t\\t\\t\\t\\tuseCache = !xml && !ofType,\\n\\t\\t\\t\\t\\t\\tdiff = false;\\n\\n\\t\\t\\t\\t\\tif ( parent ) {\\n\\n\\t\\t\\t\\t\\t\\t// :(first|last|only)-(child|of-type)\\n\\t\\t\\t\\t\\t\\tif ( simple ) {\\n\\t\\t\\t\\t\\t\\t\\twhile ( dir ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tnode = elem;\\n\\t\\t\\t\\t\\t\\t\\t\\twhile ( ( node = node[ dir ] ) ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( ofType ?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tnodeName( node, name ) :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tnode.nodeType === 1 ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treturn false;\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// Reverse direction for :only-* (if we haven't yet done so)\\n\\t\\t\\t\\t\\t\\t\\t\\tstart = dir = type === \\\"only\\\" && !start && \\\"nextSibling\\\";\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tstart = [ forward ? parent.firstChild : parent.lastChild ];\\n\\n\\t\\t\\t\\t\\t\\t// non-xml :nth-child(...) stores cache data on `parent`\\n\\t\\t\\t\\t\\t\\tif ( forward && useCache ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Seek `elem` from a previously-cached index\\n\\t\\t\\t\\t\\t\\t\\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\\n\\t\\t\\t\\t\\t\\t\\tcache = outerCache[ type ] || [];\\n\\t\\t\\t\\t\\t\\t\\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\\n\\t\\t\\t\\t\\t\\t\\tdiff = nodeIndex && cache[ 2 ];\\n\\t\\t\\t\\t\\t\\t\\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\\n\\n\\t\\t\\t\\t\\t\\t\\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// Fallback to seeking `elem` from the start\\n\\t\\t\\t\\t\\t\\t\\t\\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// When found, cache indexes on `parent` and break\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( node.nodeType === 1 && ++diff && node === elem ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Use previously-cached element index if available\\n\\t\\t\\t\\t\\t\\t\\tif ( useCache ) {\\n\\t\\t\\t\\t\\t\\t\\t\\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\\n\\t\\t\\t\\t\\t\\t\\t\\tcache = outerCache[ type ] || [];\\n\\t\\t\\t\\t\\t\\t\\t\\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\\n\\t\\t\\t\\t\\t\\t\\t\\tdiff = nodeIndex;\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t// xml :nth-child(...)\\n\\t\\t\\t\\t\\t\\t\\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\\n\\t\\t\\t\\t\\t\\t\\tif ( diff === false ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// Use the same loop as above to seek `elem` from the start\\n\\t\\t\\t\\t\\t\\t\\t\\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( ( ofType ?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tnodeName( node, name ) :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tnode.nodeType === 1 ) &&\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t++diff ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Cache the index of each encountered element\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( useCache ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\touterCache = node[ expando ] ||\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t( node[ expando ] = {} );\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\touterCache[ type ] = [ dirruns, diff ];\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( node === elem ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t// Incorporate the offset, then check against cycle size\\n\\t\\t\\t\\t\\t\\tdiff -= last;\\n\\t\\t\\t\\t\\t\\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t};\\n\\t\\t},\\n\\n\\t\\tPSEUDO: function( pseudo, argument ) {\\n\\n\\t\\t\\t// pseudo-class names are case-insensitive\\n\\t\\t\\t// https://www.w3.org/TR/selectors/#pseudo-classes\\n\\t\\t\\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\\n\\t\\t\\t// Remember that setFilters inherits from pseudos\\n\\t\\t\\tvar args,\\n\\t\\t\\t\\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\\n\\t\\t\\t\\t\\tfind.error( \\\"unsupported pseudo: \\\" + pseudo );\\n\\n\\t\\t\\t// The user may use createPseudo to indicate that\\n\\t\\t\\t// arguments are needed to create the filter function\\n\\t\\t\\t// just as jQuery does\\n\\t\\t\\tif ( fn[ expando ] ) {\\n\\t\\t\\t\\treturn fn( argument );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// But maintain support for old signatures\\n\\t\\t\\tif ( fn.length > 1 ) {\\n\\t\\t\\t\\targs = [ pseudo, pseudo, \\\"\\\", argument ];\\n\\t\\t\\t\\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\\n\\t\\t\\t\\t\\tmarkFunction( function( seed, matches ) {\\n\\t\\t\\t\\t\\t\\tvar idx,\\n\\t\\t\\t\\t\\t\\t\\tmatched = fn( seed, argument ),\\n\\t\\t\\t\\t\\t\\t\\ti = matched.length;\\n\\t\\t\\t\\t\\t\\twhile ( i-- ) {\\n\\t\\t\\t\\t\\t\\t\\tidx = indexOf.call( seed, matched[ i ] );\\n\\t\\t\\t\\t\\t\\t\\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t} ) :\\n\\t\\t\\t\\t\\tfunction( elem ) {\\n\\t\\t\\t\\t\\t\\treturn fn( elem, 0, args );\\n\\t\\t\\t\\t\\t};\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn fn;\\n\\t\\t}\\n\\t},\\n\\n\\tpseudos: {\\n\\n\\t\\t// Potentially complex pseudos\\n\\t\\tnot: markFunction( function( selector ) {\\n\\n\\t\\t\\t// Trim the selector passed to compile\\n\\t\\t\\t// to avoid treating leading and trailing\\n\\t\\t\\t// spaces as combinators\\n\\t\\t\\tvar input = [],\\n\\t\\t\\t\\tresults = [],\\n\\t\\t\\t\\tmatcher = compile( selector.replace( rtrimCSS, \\\"$1\\\" ) );\\n\\n\\t\\t\\treturn matcher[ expando ] ?\\n\\t\\t\\t\\tmarkFunction( function( seed, matches, _context, xml ) {\\n\\t\\t\\t\\t\\tvar elem,\\n\\t\\t\\t\\t\\t\\tunmatched = matcher( seed, null, xml, [] ),\\n\\t\\t\\t\\t\\t\\ti = seed.length;\\n\\n\\t\\t\\t\\t\\t// Match elements unmatched by `matcher`\\n\\t\\t\\t\\t\\twhile ( i-- ) {\\n\\t\\t\\t\\t\\t\\tif ( ( elem = unmatched[ i ] ) ) {\\n\\t\\t\\t\\t\\t\\t\\tseed[ i ] = !( matches[ i ] = elem );\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t} ) :\\n\\t\\t\\t\\tfunction( elem, _context, xml ) {\\n\\t\\t\\t\\t\\tinput[ 0 ] = elem;\\n\\t\\t\\t\\t\\tmatcher( input, null, xml, results );\\n\\n\\t\\t\\t\\t\\t// Don't keep the element\\n\\t\\t\\t\\t\\t// (see https://github.com/jquery/sizzle/issues/299)\\n\\t\\t\\t\\t\\tinput[ 0 ] = null;\\n\\t\\t\\t\\t\\treturn !results.pop();\\n\\t\\t\\t\\t};\\n\\t\\t} ),\\n\\n\\t\\thas: markFunction( function( selector ) {\\n\\t\\t\\treturn function( elem ) {\\n\\t\\t\\t\\treturn find( selector, elem ).length > 0;\\n\\t\\t\\t};\\n\\t\\t} ),\\n\\n\\t\\tcontains: markFunction( function( text ) {\\n\\t\\t\\ttext = text.replace( runescape, funescape );\\n\\t\\t\\treturn function( elem ) {\\n\\t\\t\\t\\treturn ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;\\n\\t\\t\\t};\\n\\t\\t} ),\\n\\n\\t\\t// \\\"Whether an element is represented by a :lang() selector\\n\\t\\t// is based solely on the element's language value\\n\\t\\t// being equal to the identifier C,\\n\\t\\t// or beginning with the identifier C immediately followed by \\\"-\\\".\\n\\t\\t// The matching of C against the element's language value is performed case-insensitively.\\n\\t\\t// The identifier C does not have to be a valid language name.\\\"\\n\\t\\t// https://www.w3.org/TR/selectors/#lang-pseudo\\n\\t\\tlang: markFunction( function( lang ) {\\n\\n\\t\\t\\t// lang value must be a valid identifier\\n\\t\\t\\tif ( !ridentifier.test( lang || \\\"\\\" ) ) {\\n\\t\\t\\t\\tfind.error( \\\"unsupported lang: \\\" + lang );\\n\\t\\t\\t}\\n\\t\\t\\tlang = lang.replace( runescape, funescape ).toLowerCase();\\n\\t\\t\\treturn function( elem ) {\\n\\t\\t\\t\\tvar elemLang;\\n\\t\\t\\t\\tdo {\\n\\t\\t\\t\\t\\tif ( ( elemLang = documentIsHTML ?\\n\\t\\t\\t\\t\\t\\telem.lang :\\n\\t\\t\\t\\t\\t\\telem.getAttribute( \\\"xml:lang\\\" ) || elem.getAttribute( \\\"lang\\\" ) ) ) {\\n\\n\\t\\t\\t\\t\\t\\telemLang = elemLang.toLowerCase();\\n\\t\\t\\t\\t\\t\\treturn elemLang === lang || elemLang.indexOf( lang + \\\"-\\\" ) === 0;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\\n\\t\\t\\t\\treturn false;\\n\\t\\t\\t};\\n\\t\\t} ),\\n\\n\\t\\t// Miscellaneous\\n\\t\\ttarget: function( elem ) {\\n\\t\\t\\tvar hash = window.location && window.location.hash;\\n\\t\\t\\treturn hash && hash.slice( 1 ) === elem.id;\\n\\t\\t},\\n\\n\\t\\troot: function( elem ) {\\n\\t\\t\\treturn elem === documentElement;\\n\\t\\t},\\n\\n\\t\\tfocus: function( elem ) {\\n\\t\\t\\treturn elem === safeActiveElement() &&\\n\\t\\t\\t\\tdocument.hasFocus() &&\\n\\t\\t\\t\\t!!( elem.type || elem.href || ~elem.tabIndex );\\n\\t\\t},\\n\\n\\t\\t// Boolean properties\\n\\t\\tenabled: createDisabledPseudo( false ),\\n\\t\\tdisabled: createDisabledPseudo( true ),\\n\\n\\t\\tchecked: function( elem ) {\\n\\n\\t\\t\\t// In CSS3, :checked should return both checked and selected elements\\n\\t\\t\\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\\n\\t\\t\\treturn ( nodeName( elem, \\\"input\\\" ) && !!elem.checked ) ||\\n\\t\\t\\t\\t( nodeName( elem, \\\"option\\\" ) && !!elem.selected );\\n\\t\\t},\\n\\n\\t\\tselected: function( elem ) {\\n\\n\\t\\t\\t// Support: IE <=11+\\n\\t\\t\\t// Accessing the selectedIndex property\\n\\t\\t\\t// forces the browser to treat the default option as\\n\\t\\t\\t// selected when in an optgroup.\\n\\t\\t\\tif ( elem.parentNode ) {\\n\\t\\t\\t\\t// eslint-disable-next-line no-unused-expressions\\n\\t\\t\\t\\telem.parentNode.selectedIndex;\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn elem.selected === true;\\n\\t\\t},\\n\\n\\t\\t// Contents\\n\\t\\tempty: function( elem ) {\\n\\n\\t\\t\\t// https://www.w3.org/TR/selectors/#empty-pseudo\\n\\t\\t\\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\\n\\t\\t\\t// but not by others (comment: 8; processing instruction: 7; etc.)\\n\\t\\t\\t// nodeType < 6 works because attributes (2) do not appear as children\\n\\t\\t\\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\\n\\t\\t\\t\\tif ( elem.nodeType < 6 ) {\\n\\t\\t\\t\\t\\treturn false;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\treturn true;\\n\\t\\t},\\n\\n\\t\\tparent: function( elem ) {\\n\\t\\t\\treturn !Expr.pseudos.empty( elem );\\n\\t\\t},\\n\\n\\t\\t// Element/input types\\n\\t\\theader: function( elem ) {\\n\\t\\t\\treturn rheader.test( elem.nodeName );\\n\\t\\t},\\n\\n\\t\\tinput: function( elem ) {\\n\\t\\t\\treturn rinputs.test( elem.nodeName );\\n\\t\\t},\\n\\n\\t\\tbutton: function( elem ) {\\n\\t\\t\\treturn nodeName( elem, \\\"input\\\" ) && elem.type === \\\"button\\\" ||\\n\\t\\t\\t\\tnodeName( elem, \\\"button\\\" );\\n\\t\\t},\\n\\n\\t\\ttext: function( elem ) {\\n\\t\\t\\tvar attr;\\n\\t\\t\\treturn nodeName( elem, \\\"input\\\" ) && elem.type === \\\"text\\\" &&\\n\\n\\t\\t\\t\\t// Support: IE <10 only\\n\\t\\t\\t\\t// New HTML5 attribute values (e.g., \\\"search\\\") appear\\n\\t\\t\\t\\t// with elem.type === \\\"text\\\"\\n\\t\\t\\t\\t( ( attr = elem.getAttribute( \\\"type\\\" ) ) == null ||\\n\\t\\t\\t\\t\\tattr.toLowerCase() === \\\"text\\\" );\\n\\t\\t},\\n\\n\\t\\t// Position-in-collection\\n\\t\\tfirst: createPositionalPseudo( function() {\\n\\t\\t\\treturn [ 0 ];\\n\\t\\t} ),\\n\\n\\t\\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\\n\\t\\t\\treturn [ length - 1 ];\\n\\t\\t} ),\\n\\n\\t\\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\\n\\t\\t\\treturn [ argument < 0 ? argument + length : argument ];\\n\\t\\t} ),\\n\\n\\t\\teven: createPositionalPseudo( function( matchIndexes, length ) {\\n\\t\\t\\tvar i = 0;\\n\\t\\t\\tfor ( ; i < length; i += 2 ) {\\n\\t\\t\\t\\tmatchIndexes.push( i );\\n\\t\\t\\t}\\n\\t\\t\\treturn matchIndexes;\\n\\t\\t} ),\\n\\n\\t\\todd: createPositionalPseudo( function( matchIndexes, length ) {\\n\\t\\t\\tvar i = 1;\\n\\t\\t\\tfor ( ; i < length; i += 2 ) {\\n\\t\\t\\t\\tmatchIndexes.push( i );\\n\\t\\t\\t}\\n\\t\\t\\treturn matchIndexes;\\n\\t\\t} ),\\n\\n\\t\\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\\n\\t\\t\\tvar i;\\n\\n\\t\\t\\tif ( argument < 0 ) {\\n\\t\\t\\t\\ti = argument + length;\\n\\t\\t\\t} else if ( argument > length ) {\\n\\t\\t\\t\\ti = length;\\n\\t\\t\\t} else {\\n\\t\\t\\t\\ti = argument;\\n\\t\\t\\t}\\n\\n\\t\\t\\tfor ( ; --i >= 0; ) {\\n\\t\\t\\t\\tmatchIndexes.push( i );\\n\\t\\t\\t}\\n\\t\\t\\treturn matchIndexes;\\n\\t\\t} ),\\n\\n\\t\\tgt: createPositionalPseudo( function( matchIndexes, length, argument ) {\\n\\t\\t\\tvar i = argument < 0 ? argument + length : argument;\\n\\t\\t\\tfor ( ; ++i < length; ) {\\n\\t\\t\\t\\tmatchIndexes.push( i );\\n\\t\\t\\t}\\n\\t\\t\\treturn matchIndexes;\\n\\t\\t} )\\n\\t}\\n};\\n\\nExpr.pseudos.nth = Expr.pseudos.eq;\\n\\n// Add button/input type pseudos\\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\\n\\tExpr.pseudos[ i ] = createInputPseudo( i );\\n}\\nfor ( i in { submit: true, reset: true } ) {\\n\\tExpr.pseudos[ i ] = createButtonPseudo( i );\\n}\\n\\n// Easy API for creating new setFilters\\nfunction setFilters() {}\\nsetFilters.prototype = Expr.filters = Expr.pseudos;\\nExpr.setFilters = new setFilters();\\n\\nfunction tokenize( selector, parseOnly ) {\\n\\tvar matched, match, tokens, type,\\n\\t\\tsoFar, groups, preFilters,\\n\\t\\tcached = tokenCache[ selector + \\\" \\\" ];\\n\\n\\tif ( cached ) {\\n\\t\\treturn parseOnly ? 0 : cached.slice( 0 );\\n\\t}\\n\\n\\tsoFar = selector;\\n\\tgroups = [];\\n\\tpreFilters = Expr.preFilter;\\n\\n\\twhile ( soFar ) {\\n\\n\\t\\t// Comma and first run\\n\\t\\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\\n\\t\\t\\tif ( match ) {\\n\\n\\t\\t\\t\\t// Don't consume trailing commas as valid\\n\\t\\t\\t\\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\\n\\t\\t\\t}\\n\\t\\t\\tgroups.push( ( tokens = [] ) );\\n\\t\\t}\\n\\n\\t\\tmatched = false;\\n\\n\\t\\t// Combinators\\n\\t\\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\\n\\t\\t\\tmatched = match.shift();\\n\\t\\t\\ttokens.push( {\\n\\t\\t\\t\\tvalue: matched,\\n\\n\\t\\t\\t\\t// Cast descendant combinators to space\\n\\t\\t\\t\\ttype: match[ 0 ].replace( rtrimCSS, \\\" \\\" )\\n\\t\\t\\t} );\\n\\t\\t\\tsoFar = soFar.slice( matched.length );\\n\\t\\t}\\n\\n\\t\\t// Filters\\n\\t\\tfor ( type in Expr.filter ) {\\n\\t\\t\\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\\n\\t\\t\\t\\t( match = preFilters[ type ]( match ) ) ) ) {\\n\\t\\t\\t\\tmatched = match.shift();\\n\\t\\t\\t\\ttokens.push( {\\n\\t\\t\\t\\t\\tvalue: matched,\\n\\t\\t\\t\\t\\ttype: type,\\n\\t\\t\\t\\t\\tmatches: match\\n\\t\\t\\t\\t} );\\n\\t\\t\\t\\tsoFar = soFar.slice( matched.length );\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif ( !matched ) {\\n\\t\\t\\tbreak;\\n\\t\\t}\\n\\t}\\n\\n\\t// Return the length of the invalid excess\\n\\t// if we're just parsing\\n\\t// Otherwise, throw an error or return tokens\\n\\tif ( parseOnly ) {\\n\\t\\treturn soFar.length;\\n\\t}\\n\\n\\treturn soFar ?\\n\\t\\tfind.error( selector ) :\\n\\n\\t\\t// Cache the tokens\\n\\t\\ttokenCache( selector, groups ).slice( 0 );\\n}\\n\\nfunction toSelector( tokens ) {\\n\\tvar i = 0,\\n\\t\\tlen = tokens.length,\\n\\t\\tselector = \\\"\\\";\\n\\tfor ( ; i < len; i++ ) {\\n\\t\\tselector += tokens[ i ].value;\\n\\t}\\n\\treturn selector;\\n}\\n\\nfunction addCombinator( matcher, combinator, base ) {\\n\\tvar dir = combinator.dir,\\n\\t\\tskip = combinator.next,\\n\\t\\tkey = skip || dir,\\n\\t\\tcheckNonElements = base && key === \\\"parentNode\\\",\\n\\t\\tdoneName = done++;\\n\\n\\treturn combinator.first ?\\n\\n\\t\\t// Check against closest ancestor/preceding element\\n\\t\\tfunction( elem, context, xml ) {\\n\\t\\t\\twhile ( ( elem = elem[ dir ] ) ) {\\n\\t\\t\\t\\tif ( elem.nodeType === 1 || checkNonElements ) {\\n\\t\\t\\t\\t\\treturn matcher( elem, context, xml );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\treturn false;\\n\\t\\t} :\\n\\n\\t\\t// Check against all ancestor/preceding elements\\n\\t\\tfunction( elem, context, xml ) {\\n\\t\\t\\tvar oldCache, outerCache,\\n\\t\\t\\t\\tnewCache = [ dirruns, doneName ];\\n\\n\\t\\t\\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\\n\\t\\t\\tif ( xml ) {\\n\\t\\t\\t\\twhile ( ( elem = elem[ dir ] ) ) {\\n\\t\\t\\t\\t\\tif ( elem.nodeType === 1 || checkNonElements ) {\\n\\t\\t\\t\\t\\t\\tif ( matcher( elem, context, xml ) ) {\\n\\t\\t\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else {\\n\\t\\t\\t\\twhile ( ( elem = elem[ dir ] ) ) {\\n\\t\\t\\t\\t\\tif ( elem.nodeType === 1 || checkNonElements ) {\\n\\t\\t\\t\\t\\t\\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\\n\\n\\t\\t\\t\\t\\t\\tif ( skip && nodeName( elem, skip ) ) {\\n\\t\\t\\t\\t\\t\\t\\telem = elem[ dir ] || elem;\\n\\t\\t\\t\\t\\t\\t} else if ( ( oldCache = outerCache[ key ] ) &&\\n\\t\\t\\t\\t\\t\\t\\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Assign to newCache so results back-propagate to previous elements\\n\\t\\t\\t\\t\\t\\t\\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\\n\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Reuse newcache so results back-propagate to previous elements\\n\\t\\t\\t\\t\\t\\t\\touterCache[ key ] = newCache;\\n\\n\\t\\t\\t\\t\\t\\t\\t// A match means we're done; a fail means we have to keep checking\\n\\t\\t\\t\\t\\t\\t\\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\\n\\t\\t\\t\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\treturn false;\\n\\t\\t};\\n}\\n\\nfunction elementMatcher( matchers ) {\\n\\treturn matchers.length > 1 ?\\n\\t\\tfunction( elem, context, xml ) {\\n\\t\\t\\tvar i = matchers.length;\\n\\t\\t\\twhile ( i-- ) {\\n\\t\\t\\t\\tif ( !matchers[ i ]( elem, context, xml ) ) {\\n\\t\\t\\t\\t\\treturn false;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\treturn true;\\n\\t\\t} :\\n\\t\\tmatchers[ 0 ];\\n}\\n\\nfunction multipleContexts( selector, contexts, results ) {\\n\\tvar i = 0,\\n\\t\\tlen = contexts.length;\\n\\tfor ( ; i < len; i++ ) {\\n\\t\\tfind( selector, contexts[ i ], results );\\n\\t}\\n\\treturn results;\\n}\\n\\nfunction condense( unmatched, map, filter, context, xml ) {\\n\\tvar elem,\\n\\t\\tnewUnmatched = [],\\n\\t\\ti = 0,\\n\\t\\tlen = unmatched.length,\\n\\t\\tmapped = map != null;\\n\\n\\tfor ( ; i < len; i++ ) {\\n\\t\\tif ( ( elem = unmatched[ i ] ) ) {\\n\\t\\t\\tif ( !filter || filter( elem, context, xml ) ) {\\n\\t\\t\\t\\tnewUnmatched.push( elem );\\n\\t\\t\\t\\tif ( mapped ) {\\n\\t\\t\\t\\t\\tmap.push( i );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\treturn newUnmatched;\\n}\\n\\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\\n\\tif ( postFilter && !postFilter[ expando ] ) {\\n\\t\\tpostFilter = setMatcher( postFilter );\\n\\t}\\n\\tif ( postFinder && !postFinder[ expando ] ) {\\n\\t\\tpostFinder = setMatcher( postFinder, postSelector );\\n\\t}\\n\\treturn markFunction( function( seed, results, context, xml ) {\\n\\t\\tvar temp, i, elem, matcherOut,\\n\\t\\t\\tpreMap = [],\\n\\t\\t\\tpostMap = [],\\n\\t\\t\\tpreexisting = results.length,\\n\\n\\t\\t\\t// Get initial elements from seed or context\\n\\t\\t\\telems = seed ||\\n\\t\\t\\t\\tmultipleContexts( selector || \\\"*\\\",\\n\\t\\t\\t\\t\\tcontext.nodeType ? [ context ] : context, [] ),\\n\\n\\t\\t\\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\\n\\t\\t\\tmatcherIn = preFilter && ( seed || !selector ) ?\\n\\t\\t\\t\\tcondense( elems, preMap, preFilter, context, xml ) :\\n\\t\\t\\t\\telems;\\n\\n\\t\\tif ( matcher ) {\\n\\n\\t\\t\\t// If we have a postFinder, or filtered seed, or non-seed postFilter\\n\\t\\t\\t// or preexisting results,\\n\\t\\t\\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\\n\\n\\t\\t\\t\\t// ...intermediate processing is necessary\\n\\t\\t\\t\\t[] :\\n\\n\\t\\t\\t\\t// ...otherwise use results directly\\n\\t\\t\\t\\tresults;\\n\\n\\t\\t\\t// Find primary matches\\n\\t\\t\\tmatcher( matcherIn, matcherOut, context, xml );\\n\\t\\t} else {\\n\\t\\t\\tmatcherOut = matcherIn;\\n\\t\\t}\\n\\n\\t\\t// Apply postFilter\\n\\t\\tif ( postFilter ) {\\n\\t\\t\\ttemp = condense( matcherOut, postMap );\\n\\t\\t\\tpostFilter( temp, [], context, xml );\\n\\n\\t\\t\\t// Un-match failing elements by moving them back to matcherIn\\n\\t\\t\\ti = temp.length;\\n\\t\\t\\twhile ( i-- ) {\\n\\t\\t\\t\\tif ( ( elem = temp[ i ] ) ) {\\n\\t\\t\\t\\t\\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif ( seed ) {\\n\\t\\t\\tif ( postFinder || preFilter ) {\\n\\t\\t\\t\\tif ( postFinder ) {\\n\\n\\t\\t\\t\\t\\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\\n\\t\\t\\t\\t\\ttemp = [];\\n\\t\\t\\t\\t\\ti = matcherOut.length;\\n\\t\\t\\t\\t\\twhile ( i-- ) {\\n\\t\\t\\t\\t\\t\\tif ( ( elem = matcherOut[ i ] ) ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Restore matcherIn since elem is not yet a final match\\n\\t\\t\\t\\t\\t\\t\\ttemp.push( ( matcherIn[ i ] = elem ) );\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tpostFinder( null, ( matcherOut = [] ), temp, xml );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Move matched elements from seed to results to keep them synchronized\\n\\t\\t\\t\\ti = matcherOut.length;\\n\\t\\t\\t\\twhile ( i-- ) {\\n\\t\\t\\t\\t\\tif ( ( elem = matcherOut[ i ] ) &&\\n\\t\\t\\t\\t\\t\\t( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {\\n\\n\\t\\t\\t\\t\\t\\tseed[ temp ] = !( results[ temp ] = elem );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t// Add elements to results, through postFinder if defined\\n\\t\\t} else {\\n\\t\\t\\tmatcherOut = condense(\\n\\t\\t\\t\\tmatcherOut === results ?\\n\\t\\t\\t\\t\\tmatcherOut.splice( preexisting, matcherOut.length ) :\\n\\t\\t\\t\\t\\tmatcherOut\\n\\t\\t\\t);\\n\\t\\t\\tif ( postFinder ) {\\n\\t\\t\\t\\tpostFinder( null, results, matcherOut, xml );\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tpush.apply( results, matcherOut );\\n\\t\\t\\t}\\n\\t\\t}\\n\\t} );\\n}\\n\\nfunction matcherFromTokens( tokens ) {\\n\\tvar checkContext, matcher, j,\\n\\t\\tlen = tokens.length,\\n\\t\\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\\n\\t\\timplicitRelative = leadingRelative || Expr.relative[ \\\" \\\" ],\\n\\t\\ti = leadingRelative ? 1 : 0,\\n\\n\\t\\t// The foundational matcher ensures that elements are reachable from top-level context(s)\\n\\t\\tmatchContext = addCombinator( function( elem ) {\\n\\t\\t\\treturn elem === checkContext;\\n\\t\\t}, implicitRelative, true ),\\n\\t\\tmatchAnyContext = addCombinator( function( elem ) {\\n\\t\\t\\treturn indexOf.call( checkContext, elem ) > -1;\\n\\t\\t}, implicitRelative, true ),\\n\\t\\tmatchers = [ function( elem, context, xml ) {\\n\\n\\t\\t\\t// Support: IE 11+, Edge 17 - 18+\\n\\t\\t\\t// IE/Edge sometimes throw a \\\"Permission denied\\\" error when strict-comparing\\n\\t\\t\\t// two documents; shallow comparisons work.\\n\\t\\t\\t// eslint-disable-next-line eqeqeq\\n\\t\\t\\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\\n\\t\\t\\t\\t( checkContext = context ).nodeType ?\\n\\t\\t\\t\\t\\tmatchContext( elem, context, xml ) :\\n\\t\\t\\t\\t\\tmatchAnyContext( elem, context, xml ) );\\n\\n\\t\\t\\t// Avoid hanging onto element\\n\\t\\t\\t// (see https://github.com/jquery/sizzle/issues/299)\\n\\t\\t\\tcheckContext = null;\\n\\t\\t\\treturn ret;\\n\\t\\t} ];\\n\\n\\tfor ( ; i < len; i++ ) {\\n\\t\\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\\n\\t\\t\\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\\n\\t\\t} else {\\n\\t\\t\\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\\n\\n\\t\\t\\t// Return special upon seeing a positional matcher\\n\\t\\t\\tif ( matcher[ expando ] ) {\\n\\n\\t\\t\\t\\t// Find the next relative operator (if any) for proper handling\\n\\t\\t\\t\\tj = ++i;\\n\\t\\t\\t\\tfor ( ; j < len; j++ ) {\\n\\t\\t\\t\\t\\tif ( Expr.relative[ tokens[ j ].type ] ) {\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn setMatcher(\\n\\t\\t\\t\\t\\ti > 1 && elementMatcher( matchers ),\\n\\t\\t\\t\\t\\ti > 1 && toSelector(\\n\\n\\t\\t\\t\\t\\t\\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\\n\\t\\t\\t\\t\\t\\ttokens.slice( 0, i - 1 )\\n\\t\\t\\t\\t\\t\\t\\t.concat( { value: tokens[ i - 2 ].type === \\\" \\\" ? \\\"*\\\" : \\\"\\\" } )\\n\\t\\t\\t\\t\\t).replace( rtrimCSS, \\\"$1\\\" ),\\n\\t\\t\\t\\t\\tmatcher,\\n\\t\\t\\t\\t\\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\\n\\t\\t\\t\\t\\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\\n\\t\\t\\t\\t\\tj < len && toSelector( tokens )\\n\\t\\t\\t\\t);\\n\\t\\t\\t}\\n\\t\\t\\tmatchers.push( matcher );\\n\\t\\t}\\n\\t}\\n\\n\\treturn elementMatcher( matchers );\\n}\\n\\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\\n\\tvar bySet = setMatchers.length > 0,\\n\\t\\tbyElement = elementMatchers.length > 0,\\n\\t\\tsuperMatcher = function( seed, context, xml, results, outermost ) {\\n\\t\\t\\tvar elem, j, matcher,\\n\\t\\t\\t\\tmatchedCount = 0,\\n\\t\\t\\t\\ti = \\\"0\\\",\\n\\t\\t\\t\\tunmatched = seed && [],\\n\\t\\t\\t\\tsetMatched = [],\\n\\t\\t\\t\\tcontextBackup = outermostContext,\\n\\n\\t\\t\\t\\t// We must always have either seed elements or outermost context\\n\\t\\t\\t\\telems = seed || byElement && Expr.find.TAG( \\\"*\\\", outermost ),\\n\\n\\t\\t\\t\\t// Use integer dirruns iff this is the outermost matcher\\n\\t\\t\\t\\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\\n\\t\\t\\t\\tlen = elems.length;\\n\\n\\t\\t\\tif ( outermost ) {\\n\\n\\t\\t\\t\\t// Support: IE 11+, Edge 17 - 18+\\n\\t\\t\\t\\t// IE/Edge sometimes throw a \\\"Permission denied\\\" error when strict-comparing\\n\\t\\t\\t\\t// two documents; shallow comparisons work.\\n\\t\\t\\t\\t// eslint-disable-next-line eqeqeq\\n\\t\\t\\t\\toutermostContext = context == document || context || outermost;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Add elements passing elementMatchers directly to results\\n\\t\\t\\t// Support: iOS <=7 - 9 only\\n\\t\\t\\t// Tolerate NodeList properties (IE: \\\"length\\\"; Safari: ) matching\\n\\t\\t\\t// elements by id. (see trac-14142)\\n\\t\\t\\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\\n\\t\\t\\t\\tif ( byElement && elem ) {\\n\\t\\t\\t\\t\\tj = 0;\\n\\n\\t\\t\\t\\t\\t// Support: IE 11+, Edge 17 - 18+\\n\\t\\t\\t\\t\\t// IE/Edge sometimes throw a \\\"Permission denied\\\" error when strict-comparing\\n\\t\\t\\t\\t\\t// two documents; shallow comparisons work.\\n\\t\\t\\t\\t\\t// eslint-disable-next-line eqeqeq\\n\\t\\t\\t\\t\\tif ( !context && elem.ownerDocument != document ) {\\n\\t\\t\\t\\t\\t\\tsetDocument( elem );\\n\\t\\t\\t\\t\\t\\txml = !documentIsHTML;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\\n\\t\\t\\t\\t\\t\\tif ( matcher( elem, context || document, xml ) ) {\\n\\t\\t\\t\\t\\t\\t\\tpush.call( results, elem );\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tif ( outermost ) {\\n\\t\\t\\t\\t\\t\\tdirruns = dirrunsUnique;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Track unmatched elements for set filters\\n\\t\\t\\t\\tif ( bySet ) {\\n\\n\\t\\t\\t\\t\\t// They will have gone through all possible matchers\\n\\t\\t\\t\\t\\tif ( ( elem = !matcher && elem ) ) {\\n\\t\\t\\t\\t\\t\\tmatchedCount--;\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Lengthen the array for every element, matched or not\\n\\t\\t\\t\\t\\tif ( seed ) {\\n\\t\\t\\t\\t\\t\\tunmatched.push( elem );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\\n\\t\\t\\t// makes the latter nonnegative.\\n\\t\\t\\tmatchedCount += i;\\n\\n\\t\\t\\t// Apply set filters to unmatched elements\\n\\t\\t\\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\\n\\t\\t\\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\\n\\t\\t\\t// no element matchers and no seed.\\n\\t\\t\\t// Incrementing an initially-string \\\"0\\\" `i` allows `i` to remain a string only in that\\n\\t\\t\\t// case, which will result in a \\\"00\\\" `matchedCount` that differs from `i` but is also\\n\\t\\t\\t// numerically zero.\\n\\t\\t\\tif ( bySet && i !== matchedCount ) {\\n\\t\\t\\t\\tj = 0;\\n\\t\\t\\t\\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\\n\\t\\t\\t\\t\\tmatcher( unmatched, setMatched, context, xml );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( seed ) {\\n\\n\\t\\t\\t\\t\\t// Reintegrate element matches to eliminate the need for sorting\\n\\t\\t\\t\\t\\tif ( matchedCount > 0 ) {\\n\\t\\t\\t\\t\\t\\twhile ( i-- ) {\\n\\t\\t\\t\\t\\t\\t\\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tsetMatched[ i ] = pop.call( results );\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Discard index placeholder values to get only actual matches\\n\\t\\t\\t\\t\\tsetMatched = condense( setMatched );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Add matches to results\\n\\t\\t\\t\\tpush.apply( results, setMatched );\\n\\n\\t\\t\\t\\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\\n\\t\\t\\t\\tif ( outermost && !seed && setMatched.length > 0 &&\\n\\t\\t\\t\\t\\t( matchedCount + setMatchers.length ) > 1 ) {\\n\\n\\t\\t\\t\\t\\tjQuery.uniqueSort( results );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Override manipulation of globals by nested matchers\\n\\t\\t\\tif ( outermost ) {\\n\\t\\t\\t\\tdirruns = dirrunsUnique;\\n\\t\\t\\t\\toutermostContext = contextBackup;\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn unmatched;\\n\\t\\t};\\n\\n\\treturn bySet ?\\n\\t\\tmarkFunction( superMatcher ) :\\n\\t\\tsuperMatcher;\\n}\\n\\nfunction compile( selector, match /* Internal Use Only */ ) {\\n\\tvar i,\\n\\t\\tsetMatchers = [],\\n\\t\\telementMatchers = [],\\n\\t\\tcached = compilerCache[ selector + \\\" \\\" ];\\n\\n\\tif ( !cached ) {\\n\\n\\t\\t// Generate a function of recursive functions that can be used to check each element\\n\\t\\tif ( !match ) {\\n\\t\\t\\tmatch = tokenize( selector );\\n\\t\\t}\\n\\t\\ti = match.length;\\n\\t\\twhile ( i-- ) {\\n\\t\\t\\tcached = matcherFromTokens( match[ i ] );\\n\\t\\t\\tif ( cached[ expando ] ) {\\n\\t\\t\\t\\tsetMatchers.push( cached );\\n\\t\\t\\t} else {\\n\\t\\t\\t\\telementMatchers.push( cached );\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Cache the compiled function\\n\\t\\tcached = compilerCache( selector,\\n\\t\\t\\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\\n\\n\\t\\t// Save selector and tokenization\\n\\t\\tcached.selector = selector;\\n\\t}\\n\\treturn cached;\\n}\\n\\n/**\\n * A low-level selection function that works with jQuery's compiled\\n * selector functions\\n * @param {String|Function} selector A selector or a pre-compiled\\n * selector function built with jQuery selector compile\\n * @param {Element} context\\n * @param {Array} [results]\\n * @param {Array} [seed] A set of elements to match against\\n */\\nfunction select( selector, context, results, seed ) {\\n\\tvar i, tokens, token, type, find,\\n\\t\\tcompiled = typeof selector === \\\"function\\\" && selector,\\n\\t\\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\\n\\n\\tresults = results || [];\\n\\n\\t// Try to minimize operations if there is only one selector in the list and no seed\\n\\t// (the latter of which guarantees us context)\\n\\tif ( match.length === 1 ) {\\n\\n\\t\\t// Reduce context if the leading compound selector is an ID\\n\\t\\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\\n\\t\\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \\\"ID\\\" &&\\n\\t\\t\\t\\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\\n\\n\\t\\t\\tcontext = ( Expr.find.ID(\\n\\t\\t\\t\\ttoken.matches[ 0 ].replace( runescape, funescape ),\\n\\t\\t\\t\\tcontext\\n\\t\\t\\t) || [] )[ 0 ];\\n\\t\\t\\tif ( !context ) {\\n\\t\\t\\t\\treturn results;\\n\\n\\t\\t\\t// Precompiled matchers will still verify ancestry, so step up a level\\n\\t\\t\\t} else if ( compiled ) {\\n\\t\\t\\t\\tcontext = context.parentNode;\\n\\t\\t\\t}\\n\\n\\t\\t\\tselector = selector.slice( tokens.shift().value.length );\\n\\t\\t}\\n\\n\\t\\t// Fetch a seed set for right-to-left matching\\n\\t\\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\\n\\t\\twhile ( i-- ) {\\n\\t\\t\\ttoken = tokens[ i ];\\n\\n\\t\\t\\t// Abort if we hit a combinator\\n\\t\\t\\tif ( Expr.relative[ ( type = token.type ) ] ) {\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\t\\t\\tif ( ( find = Expr.find[ type ] ) ) {\\n\\n\\t\\t\\t\\t// Search, expanding context for leading sibling combinators\\n\\t\\t\\t\\tif ( ( seed = find(\\n\\t\\t\\t\\t\\ttoken.matches[ 0 ].replace( runescape, funescape ),\\n\\t\\t\\t\\t\\trsibling.test( tokens[ 0 ].type ) &&\\n\\t\\t\\t\\t\\t\\ttestContext( context.parentNode ) || context\\n\\t\\t\\t\\t) ) ) {\\n\\n\\t\\t\\t\\t\\t// If seed is empty or no tokens remain, we can return early\\n\\t\\t\\t\\t\\ttokens.splice( i, 1 );\\n\\t\\t\\t\\t\\tselector = seed.length && toSelector( tokens );\\n\\t\\t\\t\\t\\tif ( !selector ) {\\n\\t\\t\\t\\t\\t\\tpush.apply( results, seed );\\n\\t\\t\\t\\t\\t\\treturn results;\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// Compile and execute a filtering function if one is not provided\\n\\t// Provide `match` to avoid retokenization if we modified the selector above\\n\\t( compiled || compile( selector, match ) )(\\n\\t\\tseed,\\n\\t\\tcontext,\\n\\t\\t!documentIsHTML,\\n\\t\\tresults,\\n\\t\\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\\n\\t);\\n\\treturn results;\\n}\\n\\n// One-time assignments\\n\\n// Support: Android <=4.0 - 4.1+\\n// Sort stability\\nsupport.sortStable = expando.split( \\\"\\\" ).sort( sortOrder ).join( \\\"\\\" ) === expando;\\n\\n// Initialize against the default document\\nsetDocument();\\n\\n// Support: Android <=4.0 - 4.1+\\n// Detached nodes confoundingly follow *each other*\\nsupport.sortDetached = assert( function( el ) {\\n\\n\\t// Should return 1, but returns 4 (following)\\n\\treturn el.compareDocumentPosition( document.createElement( \\\"fieldset\\\" ) ) & 1;\\n} );\\n\\njQuery.find = find;\\n\\n// Deprecated\\njQuery.expr[ \\\":\\\" ] = jQuery.expr.pseudos;\\njQuery.unique = jQuery.uniqueSort;\\n\\n// These have always been private, but they used to be documented\\n// as part of Sizzle so let's maintain them in the 3.x line\\n// for backwards compatibility purposes.\\nfind.compile = compile;\\nfind.select = select;\\nfind.setDocument = setDocument;\\n\\nfind.escape = jQuery.escapeSelector;\\nfind.getText = jQuery.text;\\nfind.isXML = jQuery.isXMLDoc;\\nfind.selectors = jQuery.expr;\\nfind.support = jQuery.support;\\nfind.uniqueSort = jQuery.uniqueSort;\\n\\n\\t/* eslint-enable */\\n\\n} )();\\n\\n\\nvar dir = function( elem, dir, until ) {\\n\\tvar matched = [],\\n\\t\\ttruncate = until !== undefined;\\n\\n\\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\\n\\t\\tif ( elem.nodeType === 1 ) {\\n\\t\\t\\tif ( truncate && jQuery( elem ).is( until ) ) {\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\t\\t\\tmatched.push( elem );\\n\\t\\t}\\n\\t}\\n\\treturn matched;\\n};\\n\\n\\nvar siblings = function( n, elem ) {\\n\\tvar matched = [];\\n\\n\\tfor ( ; n; n = n.nextSibling ) {\\n\\t\\tif ( n.nodeType === 1 && n !== elem ) {\\n\\t\\t\\tmatched.push( n );\\n\\t\\t}\\n\\t}\\n\\n\\treturn matched;\\n};\\n\\n\\nvar rneedsContext = jQuery.expr.match.needsContext;\\n\\nvar rsingleTag = ( /^<([a-z][^\\\\/\\\\0>:\\\\x20\\\\t\\\\r\\\\n\\\\f]*)[\\\\x20\\\\t\\\\r\\\\n\\\\f]*\\\\/?>(?:<\\\\/\\\\1>|)$/i );\\n\\n\\n\\n// Implement the identical functionality for filter and not\\nfunction winnow( elements, qualifier, not ) {\\n\\tif ( isFunction( qualifier ) ) {\\n\\t\\treturn jQuery.grep( elements, function( elem, i ) {\\n\\t\\t\\treturn !!qualifier.call( elem, i, elem ) !== not;\\n\\t\\t} );\\n\\t}\\n\\n\\t// Single element\\n\\tif ( qualifier.nodeType ) {\\n\\t\\treturn jQuery.grep( elements, function( elem ) {\\n\\t\\t\\treturn ( elem === qualifier ) !== not;\\n\\t\\t} );\\n\\t}\\n\\n\\t// Arraylike of elements (jQuery, arguments, Array)\\n\\tif ( typeof qualifier !== \\\"string\\\" ) {\\n\\t\\treturn jQuery.grep( elements, function( elem ) {\\n\\t\\t\\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\\n\\t\\t} );\\n\\t}\\n\\n\\t// Filtered directly for both simple and complex selectors\\n\\treturn jQuery.filter( qualifier, elements, not );\\n}\\n\\njQuery.filter = function( expr, elems, not ) {\\n\\tvar elem = elems[ 0 ];\\n\\n\\tif ( not ) {\\n\\t\\texpr = \\\":not(\\\" + expr + \\\")\\\";\\n\\t}\\n\\n\\tif ( elems.length === 1 && elem.nodeType === 1 ) {\\n\\t\\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\\n\\t}\\n\\n\\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\\n\\t\\treturn elem.nodeType === 1;\\n\\t} ) );\\n};\\n\\njQuery.fn.extend( {\\n\\tfind: function( selector ) {\\n\\t\\tvar i, ret,\\n\\t\\t\\tlen = this.length,\\n\\t\\t\\tself = this;\\n\\n\\t\\tif ( typeof selector !== \\\"string\\\" ) {\\n\\t\\t\\treturn this.pushStack( jQuery( selector ).filter( function() {\\n\\t\\t\\t\\tfor ( i = 0; i < len; i++ ) {\\n\\t\\t\\t\\t\\tif ( jQuery.contains( self[ i ], this ) ) {\\n\\t\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t} ) );\\n\\t\\t}\\n\\n\\t\\tret = this.pushStack( [] );\\n\\n\\t\\tfor ( i = 0; i < len; i++ ) {\\n\\t\\t\\tjQuery.find( selector, self[ i ], ret );\\n\\t\\t}\\n\\n\\t\\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\\n\\t},\\n\\tfilter: function( selector ) {\\n\\t\\treturn this.pushStack( winnow( this, selector || [], false ) );\\n\\t},\\n\\tnot: function( selector ) {\\n\\t\\treturn this.pushStack( winnow( this, selector || [], true ) );\\n\\t},\\n\\tis: function( selector ) {\\n\\t\\treturn !!winnow(\\n\\t\\t\\tthis,\\n\\n\\t\\t\\t// If this is a positional/relative selector, check membership in the returned set\\n\\t\\t\\t// so $(\\\"p:first\\\").is(\\\"p:last\\\") won't return true for a doc with two \\\"p\\\".\\n\\t\\t\\ttypeof selector === \\\"string\\\" && rneedsContext.test( selector ) ?\\n\\t\\t\\t\\tjQuery( selector ) :\\n\\t\\t\\t\\tselector || [],\\n\\t\\t\\tfalse\\n\\t\\t).length;\\n\\t}\\n} );\\n\\n\\n// Initialize a jQuery object\\n\\n\\n// A central reference to the root jQuery(document)\\nvar rootjQuery,\\n\\n\\t// A simple way to check for HTML strings\\n\\t// Prioritize #id over to avoid XSS via location.hash (trac-9521)\\n\\t// Strict HTML recognition (trac-11290: must start with <)\\n\\t// Shortcut simple #id case for speed\\n\\trquickExpr = /^(?:\\\\s*(<[\\\\w\\\\W]+>)[^>]*|#([\\\\w-]+))$/,\\n\\n\\tinit = jQuery.fn.init = function( selector, context, root ) {\\n\\t\\tvar match, elem;\\n\\n\\t\\t// HANDLE: $(\\\"\\\"), $(null), $(undefined), $(false)\\n\\t\\tif ( !selector ) {\\n\\t\\t\\treturn this;\\n\\t\\t}\\n\\n\\t\\t// Method init() accepts an alternate rootjQuery\\n\\t\\t// so migrate can support jQuery.sub (gh-2101)\\n\\t\\troot = root || rootjQuery;\\n\\n\\t\\t// Handle HTML strings\\n\\t\\tif ( typeof selector === \\\"string\\\" ) {\\n\\t\\t\\tif ( selector[ 0 ] === \\\"<\\\" &&\\n\\t\\t\\t\\tselector[ selector.length - 1 ] === \\\">\\\" &&\\n\\t\\t\\t\\tselector.length >= 3 ) {\\n\\n\\t\\t\\t\\t// Assume that strings that start and end with <> are HTML and skip the regex check\\n\\t\\t\\t\\tmatch = [ null, selector, null ];\\n\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tmatch = rquickExpr.exec( selector );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Match html or make sure no context is specified for #id\\n\\t\\t\\tif ( match && ( match[ 1 ] || !context ) ) {\\n\\n\\t\\t\\t\\t// HANDLE: $(html) -> $(array)\\n\\t\\t\\t\\tif ( match[ 1 ] ) {\\n\\t\\t\\t\\t\\tcontext = context instanceof jQuery ? context[ 0 ] : context;\\n\\n\\t\\t\\t\\t\\t// Option to run scripts is true for back-compat\\n\\t\\t\\t\\t\\t// Intentionally let the error be thrown if parseHTML is not present\\n\\t\\t\\t\\t\\tjQuery.merge( this, jQuery.parseHTML(\\n\\t\\t\\t\\t\\t\\tmatch[ 1 ],\\n\\t\\t\\t\\t\\t\\tcontext && context.nodeType ? context.ownerDocument || context : document,\\n\\t\\t\\t\\t\\t\\ttrue\\n\\t\\t\\t\\t\\t) );\\n\\n\\t\\t\\t\\t\\t// HANDLE: $(html, props)\\n\\t\\t\\t\\t\\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\\n\\t\\t\\t\\t\\t\\tfor ( match in context ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Properties of context are called as methods if possible\\n\\t\\t\\t\\t\\t\\t\\tif ( isFunction( this[ match ] ) ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tthis[ match ]( context[ match ] );\\n\\n\\t\\t\\t\\t\\t\\t\\t// ...and otherwise set as attributes\\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\t\\tthis.attr( match, context[ match ] );\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t\\t// HANDLE: $(#id)\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\telem = document.getElementById( match[ 2 ] );\\n\\n\\t\\t\\t\\t\\tif ( elem ) {\\n\\n\\t\\t\\t\\t\\t\\t// Inject the element directly into the jQuery object\\n\\t\\t\\t\\t\\t\\tthis[ 0 ] = elem;\\n\\t\\t\\t\\t\\t\\tthis.length = 1;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\treturn this;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t// HANDLE: $(expr, $(...))\\n\\t\\t\\t} else if ( !context || context.jquery ) {\\n\\t\\t\\t\\treturn ( context || root ).find( selector );\\n\\n\\t\\t\\t// HANDLE: $(expr, context)\\n\\t\\t\\t// (which is just equivalent to: $(context).find(expr)\\n\\t\\t\\t} else {\\n\\t\\t\\t\\treturn this.constructor( context ).find( selector );\\n\\t\\t\\t}\\n\\n\\t\\t// HANDLE: $(DOMElement)\\n\\t\\t} else if ( selector.nodeType ) {\\n\\t\\t\\tthis[ 0 ] = selector;\\n\\t\\t\\tthis.length = 1;\\n\\t\\t\\treturn this;\\n\\n\\t\\t// HANDLE: $(function)\\n\\t\\t// Shortcut for document ready\\n\\t\\t} else if ( isFunction( selector ) ) {\\n\\t\\t\\treturn root.ready !== undefined ?\\n\\t\\t\\t\\troot.ready( selector ) :\\n\\n\\t\\t\\t\\t// Execute immediately if ready is not present\\n\\t\\t\\t\\tselector( jQuery );\\n\\t\\t}\\n\\n\\t\\treturn jQuery.makeArray( selector, this );\\n\\t};\\n\\n// Give the init function the jQuery prototype for later instantiation\\ninit.prototype = jQuery.fn;\\n\\n// Initialize central reference\\nrootjQuery = jQuery( document );\\n\\n\\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\\n\\n\\t// Methods guaranteed to produce a unique set when starting from a unique set\\n\\tguaranteedUnique = {\\n\\t\\tchildren: true,\\n\\t\\tcontents: true,\\n\\t\\tnext: true,\\n\\t\\tprev: true\\n\\t};\\n\\njQuery.fn.extend( {\\n\\thas: function( target ) {\\n\\t\\tvar targets = jQuery( target, this ),\\n\\t\\t\\tl = targets.length;\\n\\n\\t\\treturn this.filter( function() {\\n\\t\\t\\tvar i = 0;\\n\\t\\t\\tfor ( ; i < l; i++ ) {\\n\\t\\t\\t\\tif ( jQuery.contains( this, targets[ i ] ) ) {\\n\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t},\\n\\n\\tclosest: function( selectors, context ) {\\n\\t\\tvar cur,\\n\\t\\t\\ti = 0,\\n\\t\\t\\tl = this.length,\\n\\t\\t\\tmatched = [],\\n\\t\\t\\ttargets = typeof selectors !== \\\"string\\\" && jQuery( selectors );\\n\\n\\t\\t// Positional selectors never match, since there's no _selection_ context\\n\\t\\tif ( !rneedsContext.test( selectors ) ) {\\n\\t\\t\\tfor ( ; i < l; i++ ) {\\n\\t\\t\\t\\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\\n\\n\\t\\t\\t\\t\\t// Always skip document fragments\\n\\t\\t\\t\\t\\tif ( cur.nodeType < 11 && ( targets ?\\n\\t\\t\\t\\t\\t\\ttargets.index( cur ) > -1 :\\n\\n\\t\\t\\t\\t\\t\\t// Don't pass non-elements to jQuery#find\\n\\t\\t\\t\\t\\t\\tcur.nodeType === 1 &&\\n\\t\\t\\t\\t\\t\\t\\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\\n\\n\\t\\t\\t\\t\\t\\tmatched.push( cur );\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\\n\\t},\\n\\n\\t// Determine the position of an element within the set\\n\\tindex: function( elem ) {\\n\\n\\t\\t// No argument, return index in parent\\n\\t\\tif ( !elem ) {\\n\\t\\t\\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\\n\\t\\t}\\n\\n\\t\\t// Index in selector\\n\\t\\tif ( typeof elem === \\\"string\\\" ) {\\n\\t\\t\\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\\n\\t\\t}\\n\\n\\t\\t// Locate the position of the desired element\\n\\t\\treturn indexOf.call( this,\\n\\n\\t\\t\\t// If it receives a jQuery object, the first element is used\\n\\t\\t\\telem.jquery ? elem[ 0 ] : elem\\n\\t\\t);\\n\\t},\\n\\n\\tadd: function( selector, context ) {\\n\\t\\treturn this.pushStack(\\n\\t\\t\\tjQuery.uniqueSort(\\n\\t\\t\\t\\tjQuery.merge( this.get(), jQuery( selector, context ) )\\n\\t\\t\\t)\\n\\t\\t);\\n\\t},\\n\\n\\taddBack: function( selector ) {\\n\\t\\treturn this.add( selector == null ?\\n\\t\\t\\tthis.prevObject : this.prevObject.filter( selector )\\n\\t\\t);\\n\\t}\\n} );\\n\\nfunction sibling( cur, dir ) {\\n\\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\\n\\treturn cur;\\n}\\n\\njQuery.each( {\\n\\tparent: function( elem ) {\\n\\t\\tvar parent = elem.parentNode;\\n\\t\\treturn parent && parent.nodeType !== 11 ? parent : null;\\n\\t},\\n\\tparents: function( elem ) {\\n\\t\\treturn dir( elem, \\\"parentNode\\\" );\\n\\t},\\n\\tparentsUntil: function( elem, _i, until ) {\\n\\t\\treturn dir( elem, \\\"parentNode\\\", until );\\n\\t},\\n\\tnext: function( elem ) {\\n\\t\\treturn sibling( elem, \\\"nextSibling\\\" );\\n\\t},\\n\\tprev: function( elem ) {\\n\\t\\treturn sibling( elem, \\\"previousSibling\\\" );\\n\\t},\\n\\tnextAll: function( elem ) {\\n\\t\\treturn dir( elem, \\\"nextSibling\\\" );\\n\\t},\\n\\tprevAll: function( elem ) {\\n\\t\\treturn dir( elem, \\\"previousSibling\\\" );\\n\\t},\\n\\tnextUntil: function( elem, _i, until ) {\\n\\t\\treturn dir( elem, \\\"nextSibling\\\", until );\\n\\t},\\n\\tprevUntil: function( elem, _i, until ) {\\n\\t\\treturn dir( elem, \\\"previousSibling\\\", until );\\n\\t},\\n\\tsiblings: function( elem ) {\\n\\t\\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\\n\\t},\\n\\tchildren: function( elem ) {\\n\\t\\treturn siblings( elem.firstChild );\\n\\t},\\n\\tcontents: function( elem ) {\\n\\t\\tif ( elem.contentDocument != null &&\\n\\n\\t\\t\\t// Support: IE 11+\\n\\t\\t\\t// elements with no `data` attribute has an object\\n\\t\\t\\t// `contentDocument` with a `null` prototype.\\n\\t\\t\\tgetProto( elem.contentDocument ) ) {\\n\\n\\t\\t\\treturn elem.contentDocument;\\n\\t\\t}\\n\\n\\t\\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\\n\\t\\t// Treat the template element as a regular one in browsers that\\n\\t\\t// don't support it.\\n\\t\\tif ( nodeName( elem, \\\"template\\\" ) ) {\\n\\t\\t\\telem = elem.content || elem;\\n\\t\\t}\\n\\n\\t\\treturn jQuery.merge( [], elem.childNodes );\\n\\t}\\n}, function( name, fn ) {\\n\\tjQuery.fn[ name ] = function( until, selector ) {\\n\\t\\tvar matched = jQuery.map( this, fn, until );\\n\\n\\t\\tif ( name.slice( -5 ) !== \\\"Until\\\" ) {\\n\\t\\t\\tselector = until;\\n\\t\\t}\\n\\n\\t\\tif ( selector && typeof selector === \\\"string\\\" ) {\\n\\t\\t\\tmatched = jQuery.filter( selector, matched );\\n\\t\\t}\\n\\n\\t\\tif ( this.length > 1 ) {\\n\\n\\t\\t\\t// Remove duplicates\\n\\t\\t\\tif ( !guaranteedUnique[ name ] ) {\\n\\t\\t\\t\\tjQuery.uniqueSort( matched );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Reverse order for parents* and prev-derivatives\\n\\t\\t\\tif ( rparentsprev.test( name ) ) {\\n\\t\\t\\t\\tmatched.reverse();\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn this.pushStack( matched );\\n\\t};\\n} );\\nvar rnothtmlwhite = ( /[^\\\\x20\\\\t\\\\r\\\\n\\\\f]+/g );\\n\\n\\n\\n// Convert String-formatted options into Object-formatted ones\\nfunction createOptions( options ) {\\n\\tvar object = {};\\n\\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\\n\\t\\tobject[ flag ] = true;\\n\\t} );\\n\\treturn object;\\n}\\n\\n/*\\n * Create a callback list using the following parameters:\\n *\\n *\\toptions: an optional list of space-separated options that will change how\\n *\\t\\t\\tthe callback list behaves or a more traditional option object\\n *\\n * By default a callback list will act like an event callback list and can be\\n * \\\"fired\\\" multiple times.\\n *\\n * Possible options:\\n *\\n *\\tonce:\\t\\t\\twill ensure the callback list can only be fired once (like a Deferred)\\n *\\n *\\tmemory:\\t\\t\\twill keep track of previous values and will call any callback added\\n *\\t\\t\\t\\t\\tafter the list has been fired right away with the latest \\\"memorized\\\"\\n *\\t\\t\\t\\t\\tvalues (like a Deferred)\\n *\\n *\\tunique:\\t\\t\\twill ensure a callback can only be added once (no duplicate in the list)\\n *\\n *\\tstopOnFalse:\\tinterrupt callings when a callback returns false\\n *\\n */\\njQuery.Callbacks = function( options ) {\\n\\n\\t// Convert options from String-formatted to Object-formatted if needed\\n\\t// (we check in cache first)\\n\\toptions = typeof options === \\\"string\\\" ?\\n\\t\\tcreateOptions( options ) :\\n\\t\\tjQuery.extend( {}, options );\\n\\n\\tvar // Flag to know if list is currently firing\\n\\t\\tfiring,\\n\\n\\t\\t// Last fire value for non-forgettable lists\\n\\t\\tmemory,\\n\\n\\t\\t// Flag to know if list was already fired\\n\\t\\tfired,\\n\\n\\t\\t// Flag to prevent firing\\n\\t\\tlocked,\\n\\n\\t\\t// Actual callback list\\n\\t\\tlist = [],\\n\\n\\t\\t// Queue of execution data for repeatable lists\\n\\t\\tqueue = [],\\n\\n\\t\\t// Index of currently firing callback (modified by add/remove as needed)\\n\\t\\tfiringIndex = -1,\\n\\n\\t\\t// Fire callbacks\\n\\t\\tfire = function() {\\n\\n\\t\\t\\t// Enforce single-firing\\n\\t\\t\\tlocked = locked || options.once;\\n\\n\\t\\t\\t// Execute callbacks for all pending executions,\\n\\t\\t\\t// respecting firingIndex overrides and runtime changes\\n\\t\\t\\tfired = firing = true;\\n\\t\\t\\tfor ( ; queue.length; firingIndex = -1 ) {\\n\\t\\t\\t\\tmemory = queue.shift();\\n\\t\\t\\t\\twhile ( ++firingIndex < list.length ) {\\n\\n\\t\\t\\t\\t\\t// Run callback and check for early termination\\n\\t\\t\\t\\t\\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\\n\\t\\t\\t\\t\\t\\toptions.stopOnFalse ) {\\n\\n\\t\\t\\t\\t\\t\\t// Jump to end and forget the data so .add doesn't re-fire\\n\\t\\t\\t\\t\\t\\tfiringIndex = list.length;\\n\\t\\t\\t\\t\\t\\tmemory = false;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Forget the data if we're done with it\\n\\t\\t\\tif ( !options.memory ) {\\n\\t\\t\\t\\tmemory = false;\\n\\t\\t\\t}\\n\\n\\t\\t\\tfiring = false;\\n\\n\\t\\t\\t// Clean up if we're done firing for good\\n\\t\\t\\tif ( locked ) {\\n\\n\\t\\t\\t\\t// Keep an empty list if we have data for future add calls\\n\\t\\t\\t\\tif ( memory ) {\\n\\t\\t\\t\\t\\tlist = [];\\n\\n\\t\\t\\t\\t// Otherwise, this object is spent\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tlist = \\\"\\\";\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\t// Actual Callbacks object\\n\\t\\tself = {\\n\\n\\t\\t\\t// Add a callback or a collection of callbacks to the list\\n\\t\\t\\tadd: function() {\\n\\t\\t\\t\\tif ( list ) {\\n\\n\\t\\t\\t\\t\\t// If we have memory from a past run, we should fire after adding\\n\\t\\t\\t\\t\\tif ( memory && !firing ) {\\n\\t\\t\\t\\t\\t\\tfiringIndex = list.length - 1;\\n\\t\\t\\t\\t\\t\\tqueue.push( memory );\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t( function add( args ) {\\n\\t\\t\\t\\t\\t\\tjQuery.each( args, function( _, arg ) {\\n\\t\\t\\t\\t\\t\\t\\tif ( isFunction( arg ) ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( !options.unique || !self.has( arg ) ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tlist.push( arg );\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t} else if ( arg && arg.length && toType( arg ) !== \\\"string\\\" ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// Inspect recursively\\n\\t\\t\\t\\t\\t\\t\\t\\tadd( arg );\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t} );\\n\\t\\t\\t\\t\\t} )( arguments );\\n\\n\\t\\t\\t\\t\\tif ( memory && !firing ) {\\n\\t\\t\\t\\t\\t\\tfire();\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn this;\\n\\t\\t\\t},\\n\\n\\t\\t\\t// Remove a callback from the list\\n\\t\\t\\tremove: function() {\\n\\t\\t\\t\\tjQuery.each( arguments, function( _, arg ) {\\n\\t\\t\\t\\t\\tvar index;\\n\\t\\t\\t\\t\\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\\n\\t\\t\\t\\t\\t\\tlist.splice( index, 1 );\\n\\n\\t\\t\\t\\t\\t\\t// Handle firing indexes\\n\\t\\t\\t\\t\\t\\tif ( index <= firingIndex ) {\\n\\t\\t\\t\\t\\t\\t\\tfiringIndex--;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t} );\\n\\t\\t\\t\\treturn this;\\n\\t\\t\\t},\\n\\n\\t\\t\\t// Check if a given callback is in the list.\\n\\t\\t\\t// If no argument is given, return whether or not list has callbacks attached.\\n\\t\\t\\thas: function( fn ) {\\n\\t\\t\\t\\treturn fn ?\\n\\t\\t\\t\\t\\tjQuery.inArray( fn, list ) > -1 :\\n\\t\\t\\t\\t\\tlist.length > 0;\\n\\t\\t\\t},\\n\\n\\t\\t\\t// Remove all callbacks from the list\\n\\t\\t\\tempty: function() {\\n\\t\\t\\t\\tif ( list ) {\\n\\t\\t\\t\\t\\tlist = [];\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn this;\\n\\t\\t\\t},\\n\\n\\t\\t\\t// Disable .fire and .add\\n\\t\\t\\t// Abort any current/pending executions\\n\\t\\t\\t// Clear all callbacks and values\\n\\t\\t\\tdisable: function() {\\n\\t\\t\\t\\tlocked = queue = [];\\n\\t\\t\\t\\tlist = memory = \\\"\\\";\\n\\t\\t\\t\\treturn this;\\n\\t\\t\\t},\\n\\t\\t\\tdisabled: function() {\\n\\t\\t\\t\\treturn !list;\\n\\t\\t\\t},\\n\\n\\t\\t\\t// Disable .fire\\n\\t\\t\\t// Also disable .add unless we have memory (since it would have no effect)\\n\\t\\t\\t// Abort any pending executions\\n\\t\\t\\tlock: function() {\\n\\t\\t\\t\\tlocked = queue = [];\\n\\t\\t\\t\\tif ( !memory && !firing ) {\\n\\t\\t\\t\\t\\tlist = memory = \\\"\\\";\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn this;\\n\\t\\t\\t},\\n\\t\\t\\tlocked: function() {\\n\\t\\t\\t\\treturn !!locked;\\n\\t\\t\\t},\\n\\n\\t\\t\\t// Call all callbacks with the given context and arguments\\n\\t\\t\\tfireWith: function( context, args ) {\\n\\t\\t\\t\\tif ( !locked ) {\\n\\t\\t\\t\\t\\targs = args || [];\\n\\t\\t\\t\\t\\targs = [ context, args.slice ? args.slice() : args ];\\n\\t\\t\\t\\t\\tqueue.push( args );\\n\\t\\t\\t\\t\\tif ( !firing ) {\\n\\t\\t\\t\\t\\t\\tfire();\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn this;\\n\\t\\t\\t},\\n\\n\\t\\t\\t// Call all the callbacks with the given arguments\\n\\t\\t\\tfire: function() {\\n\\t\\t\\t\\tself.fireWith( this, arguments );\\n\\t\\t\\t\\treturn this;\\n\\t\\t\\t},\\n\\n\\t\\t\\t// To know if the callbacks have already been called at least once\\n\\t\\t\\tfired: function() {\\n\\t\\t\\t\\treturn !!fired;\\n\\t\\t\\t}\\n\\t\\t};\\n\\n\\treturn self;\\n};\\n\\n\\nfunction Identity( v ) {\\n\\treturn v;\\n}\\nfunction Thrower( ex ) {\\n\\tthrow ex;\\n}\\n\\nfunction adoptValue( value, resolve, reject, noValue ) {\\n\\tvar method;\\n\\n\\ttry {\\n\\n\\t\\t// Check for promise aspect first to privilege synchronous behavior\\n\\t\\tif ( value && isFunction( ( method = value.promise ) ) ) {\\n\\t\\t\\tmethod.call( value ).done( resolve ).fail( reject );\\n\\n\\t\\t// Other thenables\\n\\t\\t} else if ( value && isFunction( ( method = value.then ) ) ) {\\n\\t\\t\\tmethod.call( value, resolve, reject );\\n\\n\\t\\t// Other non-thenables\\n\\t\\t} else {\\n\\n\\t\\t\\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\\n\\t\\t\\t// * false: [ value ].slice( 0 ) => resolve( value )\\n\\t\\t\\t// * true: [ value ].slice( 1 ) => resolve()\\n\\t\\t\\tresolve.apply( undefined, [ value ].slice( noValue ) );\\n\\t\\t}\\n\\n\\t// For Promises/A+, convert exceptions into rejections\\n\\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\\n\\t// Deferred#then to conditionally suppress rejection.\\n\\t} catch ( value ) {\\n\\n\\t\\t// Support: Android 4.0 only\\n\\t\\t// Strict mode functions invoked without .call/.apply get global-object context\\n\\t\\treject.apply( undefined, [ value ] );\\n\\t}\\n}\\n\\njQuery.extend( {\\n\\n\\tDeferred: function( func ) {\\n\\t\\tvar tuples = [\\n\\n\\t\\t\\t\\t// action, add listener, callbacks,\\n\\t\\t\\t\\t// ... .then handlers, argument index, [final state]\\n\\t\\t\\t\\t[ \\\"notify\\\", \\\"progress\\\", jQuery.Callbacks( \\\"memory\\\" ),\\n\\t\\t\\t\\t\\tjQuery.Callbacks( \\\"memory\\\" ), 2 ],\\n\\t\\t\\t\\t[ \\\"resolve\\\", \\\"done\\\", jQuery.Callbacks( \\\"once memory\\\" ),\\n\\t\\t\\t\\t\\tjQuery.Callbacks( \\\"once memory\\\" ), 0, \\\"resolved\\\" ],\\n\\t\\t\\t\\t[ \\\"reject\\\", \\\"fail\\\", jQuery.Callbacks( \\\"once memory\\\" ),\\n\\t\\t\\t\\t\\tjQuery.Callbacks( \\\"once memory\\\" ), 1, \\\"rejected\\\" ]\\n\\t\\t\\t],\\n\\t\\t\\tstate = \\\"pending\\\",\\n\\t\\t\\tpromise = {\\n\\t\\t\\t\\tstate: function() {\\n\\t\\t\\t\\t\\treturn state;\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\talways: function() {\\n\\t\\t\\t\\t\\tdeferred.done( arguments ).fail( arguments );\\n\\t\\t\\t\\t\\treturn this;\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\t\\\"catch\\\": function( fn ) {\\n\\t\\t\\t\\t\\treturn promise.then( null, fn );\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\t// Keep pipe for back-compat\\n\\t\\t\\t\\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\\n\\t\\t\\t\\t\\tvar fns = arguments;\\n\\n\\t\\t\\t\\t\\treturn jQuery.Deferred( function( newDefer ) {\\n\\t\\t\\t\\t\\t\\tjQuery.each( tuples, function( _i, tuple ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\\n\\t\\t\\t\\t\\t\\t\\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\\n\\n\\t\\t\\t\\t\\t\\t\\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\\n\\t\\t\\t\\t\\t\\t\\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\\n\\t\\t\\t\\t\\t\\t\\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\\n\\t\\t\\t\\t\\t\\t\\tdeferred[ tuple[ 1 ] ]( function() {\\n\\t\\t\\t\\t\\t\\t\\t\\tvar returned = fn && fn.apply( this, arguments );\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( returned && isFunction( returned.promise ) ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\treturned.promise()\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t.progress( newDefer.notify )\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t.done( newDefer.resolve )\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t.fail( newDefer.reject );\\n\\t\\t\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tnewDefer[ tuple[ 0 ] + \\\"With\\\" ](\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tfn ? [ returned ] : arguments\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t} );\\n\\t\\t\\t\\t\\t\\t} );\\n\\t\\t\\t\\t\\t\\tfns = null;\\n\\t\\t\\t\\t\\t} ).promise();\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tthen: function( onFulfilled, onRejected, onProgress ) {\\n\\t\\t\\t\\t\\tvar maxDepth = 0;\\n\\t\\t\\t\\t\\tfunction resolve( depth, deferred, handler, special ) {\\n\\t\\t\\t\\t\\t\\treturn function() {\\n\\t\\t\\t\\t\\t\\t\\tvar that = this,\\n\\t\\t\\t\\t\\t\\t\\t\\targs = arguments,\\n\\t\\t\\t\\t\\t\\t\\t\\tmightThrow = function() {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvar returned, then;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// Support: Promises/A+ section 2.3.3.3.3\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// https://promisesaplus.com/#point-59\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// Ignore double-resolution attempts\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( depth < maxDepth ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treturn;\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\treturned = handler.apply( that, args );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// Support: Promises/A+ section 2.3.1\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// https://promisesaplus.com/#point-48\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( returned === deferred.promise() ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthrow new TypeError( \\\"Thenable self-resolution\\\" );\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// Support: Promises/A+ sections 2.3.3.1, 3.5\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// https://promisesaplus.com/#point-54\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// https://promisesaplus.com/#point-75\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// Retrieve `then` only once\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tthen = returned &&\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Support: Promises/A+ section 2.3.4\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// https://promisesaplus.com/#point-64\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Only check objects and functions for thenability\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t( typeof returned === \\\"object\\\" ||\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttypeof returned === \\\"function\\\" ) &&\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treturned.then;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// Handle a returned thenable\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( isFunction( then ) ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Special processors (notify) just wait for resolution\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( special ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthen.call(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treturned,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tresolve( maxDepth, deferred, Identity, special ),\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tresolve( maxDepth, deferred, Thrower, special )\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Normal processors (resolve) also hook into progress\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// ...and disregard older resolution values\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tmaxDepth++;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthen.call(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treturned,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tresolve( maxDepth, deferred, Identity, special ),\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tresolve( maxDepth, deferred, Thrower, special ),\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tresolve( maxDepth, deferred, Identity,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeferred.notifyWith )\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// Handle all other returned values\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Only substitute handlers pass on context\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// and multiple values (non-spec behavior)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( handler !== Identity ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthat = undefined;\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\targs = [ returned ];\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Process the value(s)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Default process is resolve\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t( special || deferred.resolveWith )( that, args );\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// Only normal processors (resolve) catch and reject exceptions\\n\\t\\t\\t\\t\\t\\t\\t\\tprocess = special ?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tmightThrow :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tfunction() {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tmightThrow();\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} catch ( e ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( jQuery.Deferred.exceptionHook ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tjQuery.Deferred.exceptionHook( e,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tprocess.error );\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Support: Promises/A+ section 2.3.3.3.4.1\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// https://promisesaplus.com/#point-61\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Ignore post-resolution exceptions\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( depth + 1 >= maxDepth ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Only substitute handlers pass on context\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// and multiple values (non-spec behavior)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( handler !== Thrower ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthat = undefined;\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\targs = [ e ];\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeferred.rejectWith( that, args );\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t};\\n\\n\\t\\t\\t\\t\\t\\t\\t// Support: Promises/A+ section 2.3.3.3.1\\n\\t\\t\\t\\t\\t\\t\\t// https://promisesaplus.com/#point-57\\n\\t\\t\\t\\t\\t\\t\\t// Re-resolve promises immediately to dodge false rejection from\\n\\t\\t\\t\\t\\t\\t\\t// subsequent errors\\n\\t\\t\\t\\t\\t\\t\\tif ( depth ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tprocess();\\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// Call an optional hook to record the error, in case of exception\\n\\t\\t\\t\\t\\t\\t\\t\\t// since it's otherwise lost when execution goes async\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( jQuery.Deferred.getErrorHook ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tprocess.error = jQuery.Deferred.getErrorHook();\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// The deprecated alias of the above. While the name suggests\\n\\t\\t\\t\\t\\t\\t\\t\\t// returning the stack, not an error instance, jQuery just passes\\n\\t\\t\\t\\t\\t\\t\\t\\t// it directly to `console.warn` so both will work; an instance\\n\\t\\t\\t\\t\\t\\t\\t\\t// just better cooperates with source maps.\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( jQuery.Deferred.getStackHook ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tprocess.error = jQuery.Deferred.getStackHook();\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\twindow.setTimeout( process );\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t};\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\treturn jQuery.Deferred( function( newDefer ) {\\n\\n\\t\\t\\t\\t\\t\\t// progress_handlers.add( ... )\\n\\t\\t\\t\\t\\t\\ttuples[ 0 ][ 3 ].add(\\n\\t\\t\\t\\t\\t\\t\\tresolve(\\n\\t\\t\\t\\t\\t\\t\\t\\t0,\\n\\t\\t\\t\\t\\t\\t\\t\\tnewDefer,\\n\\t\\t\\t\\t\\t\\t\\t\\tisFunction( onProgress ) ?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tonProgress :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tIdentity,\\n\\t\\t\\t\\t\\t\\t\\t\\tnewDefer.notifyWith\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\t\\t// fulfilled_handlers.add( ... )\\n\\t\\t\\t\\t\\t\\ttuples[ 1 ][ 3 ].add(\\n\\t\\t\\t\\t\\t\\t\\tresolve(\\n\\t\\t\\t\\t\\t\\t\\t\\t0,\\n\\t\\t\\t\\t\\t\\t\\t\\tnewDefer,\\n\\t\\t\\t\\t\\t\\t\\t\\tisFunction( onFulfilled ) ?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tonFulfilled :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tIdentity\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\t\\t// rejected_handlers.add( ... )\\n\\t\\t\\t\\t\\t\\ttuples[ 2 ][ 3 ].add(\\n\\t\\t\\t\\t\\t\\t\\tresolve(\\n\\t\\t\\t\\t\\t\\t\\t\\t0,\\n\\t\\t\\t\\t\\t\\t\\t\\tnewDefer,\\n\\t\\t\\t\\t\\t\\t\\t\\tisFunction( onRejected ) ?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tonRejected :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tThrower\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t);\\n\\t\\t\\t\\t\\t} ).promise();\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\t// Get a promise for this deferred\\n\\t\\t\\t\\t// If obj is provided, the promise aspect is added to the object\\n\\t\\t\\t\\tpromise: function( obj ) {\\n\\t\\t\\t\\t\\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\\n\\t\\t\\t\\t}\\n\\t\\t\\t},\\n\\t\\t\\tdeferred = {};\\n\\n\\t\\t// Add list-specific methods\\n\\t\\tjQuery.each( tuples, function( i, tuple ) {\\n\\t\\t\\tvar list = tuple[ 2 ],\\n\\t\\t\\t\\tstateString = tuple[ 5 ];\\n\\n\\t\\t\\t// promise.progress = list.add\\n\\t\\t\\t// promise.done = list.add\\n\\t\\t\\t// promise.fail = list.add\\n\\t\\t\\tpromise[ tuple[ 1 ] ] = list.add;\\n\\n\\t\\t\\t// Handle state\\n\\t\\t\\tif ( stateString ) {\\n\\t\\t\\t\\tlist.add(\\n\\t\\t\\t\\t\\tfunction() {\\n\\n\\t\\t\\t\\t\\t\\t// state = \\\"resolved\\\" (i.e., fulfilled)\\n\\t\\t\\t\\t\\t\\t// state = \\\"rejected\\\"\\n\\t\\t\\t\\t\\t\\tstate = stateString;\\n\\t\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\t\\t// rejected_callbacks.disable\\n\\t\\t\\t\\t\\t// fulfilled_callbacks.disable\\n\\t\\t\\t\\t\\ttuples[ 3 - i ][ 2 ].disable,\\n\\n\\t\\t\\t\\t\\t// rejected_handlers.disable\\n\\t\\t\\t\\t\\t// fulfilled_handlers.disable\\n\\t\\t\\t\\t\\ttuples[ 3 - i ][ 3 ].disable,\\n\\n\\t\\t\\t\\t\\t// progress_callbacks.lock\\n\\t\\t\\t\\t\\ttuples[ 0 ][ 2 ].lock,\\n\\n\\t\\t\\t\\t\\t// progress_handlers.lock\\n\\t\\t\\t\\t\\ttuples[ 0 ][ 3 ].lock\\n\\t\\t\\t\\t);\\n\\t\\t\\t}\\n\\n\\t\\t\\t// progress_handlers.fire\\n\\t\\t\\t// fulfilled_handlers.fire\\n\\t\\t\\t// rejected_handlers.fire\\n\\t\\t\\tlist.add( tuple[ 3 ].fire );\\n\\n\\t\\t\\t// deferred.notify = function() { deferred.notifyWith(...) }\\n\\t\\t\\t// deferred.resolve = function() { deferred.resolveWith(...) }\\n\\t\\t\\t// deferred.reject = function() { deferred.rejectWith(...) }\\n\\t\\t\\tdeferred[ tuple[ 0 ] ] = function() {\\n\\t\\t\\t\\tdeferred[ tuple[ 0 ] + \\\"With\\\" ]( this === deferred ? undefined : this, arguments );\\n\\t\\t\\t\\treturn this;\\n\\t\\t\\t};\\n\\n\\t\\t\\t// deferred.notifyWith = list.fireWith\\n\\t\\t\\t// deferred.resolveWith = list.fireWith\\n\\t\\t\\t// deferred.rejectWith = list.fireWith\\n\\t\\t\\tdeferred[ tuple[ 0 ] + \\\"With\\\" ] = list.fireWith;\\n\\t\\t} );\\n\\n\\t\\t// Make the deferred a promise\\n\\t\\tpromise.promise( deferred );\\n\\n\\t\\t// Call given func if any\\n\\t\\tif ( func ) {\\n\\t\\t\\tfunc.call( deferred, deferred );\\n\\t\\t}\\n\\n\\t\\t// All done!\\n\\t\\treturn deferred;\\n\\t},\\n\\n\\t// Deferred helper\\n\\twhen: function( singleValue ) {\\n\\t\\tvar\\n\\n\\t\\t\\t// count of uncompleted subordinates\\n\\t\\t\\tremaining = arguments.length,\\n\\n\\t\\t\\t// count of unprocessed arguments\\n\\t\\t\\ti = remaining,\\n\\n\\t\\t\\t// subordinate fulfillment data\\n\\t\\t\\tresolveContexts = Array( i ),\\n\\t\\t\\tresolveValues = slice.call( arguments ),\\n\\n\\t\\t\\t// the primary Deferred\\n\\t\\t\\tprimary = jQuery.Deferred(),\\n\\n\\t\\t\\t// subordinate callback factory\\n\\t\\t\\tupdateFunc = function( i ) {\\n\\t\\t\\t\\treturn function( value ) {\\n\\t\\t\\t\\t\\tresolveContexts[ i ] = this;\\n\\t\\t\\t\\t\\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\\n\\t\\t\\t\\t\\tif ( !( --remaining ) ) {\\n\\t\\t\\t\\t\\t\\tprimary.resolveWith( resolveContexts, resolveValues );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t};\\n\\t\\t\\t};\\n\\n\\t\\t// Single- and empty arguments are adopted like Promise.resolve\\n\\t\\tif ( remaining <= 1 ) {\\n\\t\\t\\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\\n\\t\\t\\t\\t!remaining );\\n\\n\\t\\t\\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\\n\\t\\t\\tif ( primary.state() === \\\"pending\\\" ||\\n\\t\\t\\t\\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\\n\\n\\t\\t\\t\\treturn primary.then();\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Multiple arguments are aggregated like Promise.all array elements\\n\\t\\twhile ( i-- ) {\\n\\t\\t\\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\\n\\t\\t}\\n\\n\\t\\treturn primary.promise();\\n\\t}\\n} );\\n\\n\\n// These usually indicate a programmer mistake during development,\\n// warn about them ASAP rather than swallowing them by default.\\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\\n\\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\\n// captured before the async barrier to get the original error cause\\n// which may otherwise be hidden.\\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\\n\\n\\t// Support: IE 8 - 9 only\\n\\t// Console exists when dev tools are open, which can happen at any time\\n\\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\\n\\t\\twindow.console.warn( \\\"jQuery.Deferred exception: \\\" + error.message,\\n\\t\\t\\terror.stack, asyncError );\\n\\t}\\n};\\n\\n\\n\\n\\njQuery.readyException = function( error ) {\\n\\twindow.setTimeout( function() {\\n\\t\\tthrow error;\\n\\t} );\\n};\\n\\n\\n\\n\\n// The deferred used on DOM ready\\nvar readyList = jQuery.Deferred();\\n\\njQuery.fn.ready = function( fn ) {\\n\\n\\treadyList\\n\\t\\t.then( fn )\\n\\n\\t\\t// Wrap jQuery.readyException in a function so that the lookup\\n\\t\\t// happens at the time of error handling instead of callback\\n\\t\\t// registration.\\n\\t\\t.catch( function( error ) {\\n\\t\\t\\tjQuery.readyException( error );\\n\\t\\t} );\\n\\n\\treturn this;\\n};\\n\\njQuery.extend( {\\n\\n\\t// Is the DOM ready to be used? Set to true once it occurs.\\n\\tisReady: false,\\n\\n\\t// A counter to track how many items to wait for before\\n\\t// the ready event fires. See trac-6781\\n\\treadyWait: 1,\\n\\n\\t// Handle when the DOM is ready\\n\\tready: function( wait ) {\\n\\n\\t\\t// Abort if there are pending holds or we're already ready\\n\\t\\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\t// Remember that the DOM is ready\\n\\t\\tjQuery.isReady = true;\\n\\n\\t\\t// If a normal DOM Ready event fired, decrement, and wait if need be\\n\\t\\tif ( wait !== true && --jQuery.readyWait > 0 ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\t// If there are functions bound, to execute\\n\\t\\treadyList.resolveWith( document, [ jQuery ] );\\n\\t}\\n} );\\n\\njQuery.ready.then = readyList.then;\\n\\n// The ready event handler and self cleanup method\\nfunction completed() {\\n\\tdocument.removeEventListener( \\\"DOMContentLoaded\\\", completed );\\n\\twindow.removeEventListener( \\\"load\\\", completed );\\n\\tjQuery.ready();\\n}\\n\\n// Catch cases where $(document).ready() is called\\n// after the browser event has already occurred.\\n// Support: IE <=9 - 10 only\\n// Older IE sometimes signals \\\"interactive\\\" too soon\\nif ( document.readyState === \\\"complete\\\" ||\\n\\t( document.readyState !== \\\"loading\\\" && !document.documentElement.doScroll ) ) {\\n\\n\\t// Handle it asynchronously to allow scripts the opportunity to delay ready\\n\\twindow.setTimeout( jQuery.ready );\\n\\n} else {\\n\\n\\t// Use the handy event callback\\n\\tdocument.addEventListener( \\\"DOMContentLoaded\\\", completed );\\n\\n\\t// A fallback to window.onload, that will always work\\n\\twindow.addEventListener( \\\"load\\\", completed );\\n}\\n\\n\\n\\n\\n// Multifunctional method to get and set values of a collection\\n// The value/s can optionally be executed if it's a function\\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\\n\\tvar i = 0,\\n\\t\\tlen = elems.length,\\n\\t\\tbulk = key == null;\\n\\n\\t// Sets many values\\n\\tif ( toType( key ) === \\\"object\\\" ) {\\n\\t\\tchainable = true;\\n\\t\\tfor ( i in key ) {\\n\\t\\t\\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\\n\\t\\t}\\n\\n\\t// Sets one value\\n\\t} else if ( value !== undefined ) {\\n\\t\\tchainable = true;\\n\\n\\t\\tif ( !isFunction( value ) ) {\\n\\t\\t\\traw = true;\\n\\t\\t}\\n\\n\\t\\tif ( bulk ) {\\n\\n\\t\\t\\t// Bulk operations run against the entire set\\n\\t\\t\\tif ( raw ) {\\n\\t\\t\\t\\tfn.call( elems, value );\\n\\t\\t\\t\\tfn = null;\\n\\n\\t\\t\\t// ...except when executing function values\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tbulk = fn;\\n\\t\\t\\t\\tfn = function( elem, _key, value ) {\\n\\t\\t\\t\\t\\treturn bulk.call( jQuery( elem ), value );\\n\\t\\t\\t\\t};\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif ( fn ) {\\n\\t\\t\\tfor ( ; i < len; i++ ) {\\n\\t\\t\\t\\tfn(\\n\\t\\t\\t\\t\\telems[ i ], key, raw ?\\n\\t\\t\\t\\t\\t\\tvalue :\\n\\t\\t\\t\\t\\t\\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\\n\\t\\t\\t\\t);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tif ( chainable ) {\\n\\t\\treturn elems;\\n\\t}\\n\\n\\t// Gets\\n\\tif ( bulk ) {\\n\\t\\treturn fn.call( elems );\\n\\t}\\n\\n\\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\\n};\\n\\n\\n// Matches dashed string for camelizing\\nvar rmsPrefix = /^-ms-/,\\n\\trdashAlpha = /-([a-z])/g;\\n\\n// Used by camelCase as callback to replace()\\nfunction fcamelCase( _all, letter ) {\\n\\treturn letter.toUpperCase();\\n}\\n\\n// Convert dashed to camelCase; used by the css and data modules\\n// Support: IE <=9 - 11, Edge 12 - 15\\n// Microsoft forgot to hump their vendor prefix (trac-9572)\\nfunction camelCase( string ) {\\n\\treturn string.replace( rmsPrefix, \\\"ms-\\\" ).replace( rdashAlpha, fcamelCase );\\n}\\nvar acceptData = function( owner ) {\\n\\n\\t// Accepts only:\\n\\t// - Node\\n\\t// - Node.ELEMENT_NODE\\n\\t// - Node.DOCUMENT_NODE\\n\\t// - Object\\n\\t// - Any\\n\\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\\n};\\n\\n\\n\\n\\nfunction Data() {\\n\\tthis.expando = jQuery.expando + Data.uid++;\\n}\\n\\nData.uid = 1;\\n\\nData.prototype = {\\n\\n\\tcache: function( owner ) {\\n\\n\\t\\t// Check if the owner object already has a cache\\n\\t\\tvar value = owner[ this.expando ];\\n\\n\\t\\t// If not, create one\\n\\t\\tif ( !value ) {\\n\\t\\t\\tvalue = {};\\n\\n\\t\\t\\t// We can accept data for non-element nodes in modern browsers,\\n\\t\\t\\t// but we should not, see trac-8335.\\n\\t\\t\\t// Always return an empty object.\\n\\t\\t\\tif ( acceptData( owner ) ) {\\n\\n\\t\\t\\t\\t// If it is a node unlikely to be stringify-ed or looped over\\n\\t\\t\\t\\t// use plain assignment\\n\\t\\t\\t\\tif ( owner.nodeType ) {\\n\\t\\t\\t\\t\\towner[ this.expando ] = value;\\n\\n\\t\\t\\t\\t// Otherwise secure it in a non-enumerable property\\n\\t\\t\\t\\t// configurable must be true to allow the property to be\\n\\t\\t\\t\\t// deleted when data is removed\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tObject.defineProperty( owner, this.expando, {\\n\\t\\t\\t\\t\\t\\tvalue: value,\\n\\t\\t\\t\\t\\t\\tconfigurable: true\\n\\t\\t\\t\\t\\t} );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn value;\\n\\t},\\n\\tset: function( owner, data, value ) {\\n\\t\\tvar prop,\\n\\t\\t\\tcache = this.cache( owner );\\n\\n\\t\\t// Handle: [ owner, key, value ] args\\n\\t\\t// Always use camelCase key (gh-2257)\\n\\t\\tif ( typeof data === \\\"string\\\" ) {\\n\\t\\t\\tcache[ camelCase( data ) ] = value;\\n\\n\\t\\t// Handle: [ owner, { properties } ] args\\n\\t\\t} else {\\n\\n\\t\\t\\t// Copy the properties one-by-one to the cache object\\n\\t\\t\\tfor ( prop in data ) {\\n\\t\\t\\t\\tcache[ camelCase( prop ) ] = data[ prop ];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn cache;\\n\\t},\\n\\tget: function( owner, key ) {\\n\\t\\treturn key === undefined ?\\n\\t\\t\\tthis.cache( owner ) :\\n\\n\\t\\t\\t// Always use camelCase key (gh-2257)\\n\\t\\t\\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\\n\\t},\\n\\taccess: function( owner, key, value ) {\\n\\n\\t\\t// In cases where either:\\n\\t\\t//\\n\\t\\t// 1. No key was specified\\n\\t\\t// 2. A string key was specified, but no value provided\\n\\t\\t//\\n\\t\\t// Take the \\\"read\\\" path and allow the get method to determine\\n\\t\\t// which value to return, respectively either:\\n\\t\\t//\\n\\t\\t// 1. The entire cache object\\n\\t\\t// 2. The data stored at the key\\n\\t\\t//\\n\\t\\tif ( key === undefined ||\\n\\t\\t\\t\\t( ( key && typeof key === \\\"string\\\" ) && value === undefined ) ) {\\n\\n\\t\\t\\treturn this.get( owner, key );\\n\\t\\t}\\n\\n\\t\\t// When the key is not a string, or both a key and value\\n\\t\\t// are specified, set or extend (existing objects) with either:\\n\\t\\t//\\n\\t\\t// 1. An object of properties\\n\\t\\t// 2. A key and value\\n\\t\\t//\\n\\t\\tthis.set( owner, key, value );\\n\\n\\t\\t// Since the \\\"set\\\" path can have two possible entry points\\n\\t\\t// return the expected data based on which path was taken[*]\\n\\t\\treturn value !== undefined ? value : key;\\n\\t},\\n\\tremove: function( owner, key ) {\\n\\t\\tvar i,\\n\\t\\t\\tcache = owner[ this.expando ];\\n\\n\\t\\tif ( cache === undefined ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\tif ( key !== undefined ) {\\n\\n\\t\\t\\t// Support array or space separated string of keys\\n\\t\\t\\tif ( Array.isArray( key ) ) {\\n\\n\\t\\t\\t\\t// If key is an array of keys...\\n\\t\\t\\t\\t// We always set camelCase keys, so remove that.\\n\\t\\t\\t\\tkey = key.map( camelCase );\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tkey = camelCase( key );\\n\\n\\t\\t\\t\\t// If a key with the spaces exists, use it.\\n\\t\\t\\t\\t// Otherwise, create an array by matching non-whitespace\\n\\t\\t\\t\\tkey = key in cache ?\\n\\t\\t\\t\\t\\t[ key ] :\\n\\t\\t\\t\\t\\t( key.match( rnothtmlwhite ) || [] );\\n\\t\\t\\t}\\n\\n\\t\\t\\ti = key.length;\\n\\n\\t\\t\\twhile ( i-- ) {\\n\\t\\t\\t\\tdelete cache[ key[ i ] ];\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Remove the expando if there's no more data\\n\\t\\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\\n\\n\\t\\t\\t// Support: Chrome <=35 - 45\\n\\t\\t\\t// Webkit & Blink performance suffers when deleting properties\\n\\t\\t\\t// from DOM nodes, so set to undefined instead\\n\\t\\t\\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\\n\\t\\t\\tif ( owner.nodeType ) {\\n\\t\\t\\t\\towner[ this.expando ] = undefined;\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tdelete owner[ this.expando ];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t},\\n\\thasData: function( owner ) {\\n\\t\\tvar cache = owner[ this.expando ];\\n\\t\\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\\n\\t}\\n};\\nvar dataPriv = new Data();\\n\\nvar dataUser = new Data();\\n\\n\\n\\n//\\tImplementation Summary\\n//\\n//\\t1. Enforce API surface and semantic compatibility with 1.9.x branch\\n//\\t2. Improve the module's maintainability by reducing the storage\\n//\\t\\tpaths to a single mechanism.\\n//\\t3. Use the same single mechanism to support \\\"private\\\" and \\\"user\\\" data.\\n//\\t4. _Never_ expose \\\"private\\\" data to user code (TODO: Drop _data, _removeData)\\n//\\t5. Avoid exposing implementation details on user objects (eg. expando properties)\\n//\\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\\n\\nvar rbrace = /^(?:\\\\{[\\\\w\\\\W]*\\\\}|\\\\[[\\\\w\\\\W]*\\\\])$/,\\n\\trmultiDash = /[A-Z]/g;\\n\\nfunction getData( data ) {\\n\\tif ( data === \\\"true\\\" ) {\\n\\t\\treturn true;\\n\\t}\\n\\n\\tif ( data === \\\"false\\\" ) {\\n\\t\\treturn false;\\n\\t}\\n\\n\\tif ( data === \\\"null\\\" ) {\\n\\t\\treturn null;\\n\\t}\\n\\n\\t// Only convert to a number if it doesn't change the string\\n\\tif ( data === +data + \\\"\\\" ) {\\n\\t\\treturn +data;\\n\\t}\\n\\n\\tif ( rbrace.test( data ) ) {\\n\\t\\treturn JSON.parse( data );\\n\\t}\\n\\n\\treturn data;\\n}\\n\\nfunction dataAttr( elem, key, data ) {\\n\\tvar name;\\n\\n\\t// If nothing was found internally, try to fetch any\\n\\t// data from the HTML5 data-* attribute\\n\\tif ( data === undefined && elem.nodeType === 1 ) {\\n\\t\\tname = \\\"data-\\\" + key.replace( rmultiDash, \\\"-$&\\\" ).toLowerCase();\\n\\t\\tdata = elem.getAttribute( name );\\n\\n\\t\\tif ( typeof data === \\\"string\\\" ) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tdata = getData( data );\\n\\t\\t\\t} catch ( e ) {}\\n\\n\\t\\t\\t// Make sure we set the data so it isn't changed later\\n\\t\\t\\tdataUser.set( elem, key, data );\\n\\t\\t} else {\\n\\t\\t\\tdata = undefined;\\n\\t\\t}\\n\\t}\\n\\treturn data;\\n}\\n\\njQuery.extend( {\\n\\thasData: function( elem ) {\\n\\t\\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\\n\\t},\\n\\n\\tdata: function( elem, name, data ) {\\n\\t\\treturn dataUser.access( elem, name, data );\\n\\t},\\n\\n\\tremoveData: function( elem, name ) {\\n\\t\\tdataUser.remove( elem, name );\\n\\t},\\n\\n\\t// TODO: Now that all calls to _data and _removeData have been replaced\\n\\t// with direct calls to dataPriv methods, these can be deprecated.\\n\\t_data: function( elem, name, data ) {\\n\\t\\treturn dataPriv.access( elem, name, data );\\n\\t},\\n\\n\\t_removeData: function( elem, name ) {\\n\\t\\tdataPriv.remove( elem, name );\\n\\t}\\n} );\\n\\njQuery.fn.extend( {\\n\\tdata: function( key, value ) {\\n\\t\\tvar i, name, data,\\n\\t\\t\\telem = this[ 0 ],\\n\\t\\t\\tattrs = elem && elem.attributes;\\n\\n\\t\\t// Gets all values\\n\\t\\tif ( key === undefined ) {\\n\\t\\t\\tif ( this.length ) {\\n\\t\\t\\t\\tdata = dataUser.get( elem );\\n\\n\\t\\t\\t\\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \\\"hasDataAttrs\\\" ) ) {\\n\\t\\t\\t\\t\\ti = attrs.length;\\n\\t\\t\\t\\t\\twhile ( i-- ) {\\n\\n\\t\\t\\t\\t\\t\\t// Support: IE 11 only\\n\\t\\t\\t\\t\\t\\t// The attrs elements can be null (trac-14894)\\n\\t\\t\\t\\t\\t\\tif ( attrs[ i ] ) {\\n\\t\\t\\t\\t\\t\\t\\tname = attrs[ i ].name;\\n\\t\\t\\t\\t\\t\\t\\tif ( name.indexOf( \\\"data-\\\" ) === 0 ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tname = camelCase( name.slice( 5 ) );\\n\\t\\t\\t\\t\\t\\t\\t\\tdataAttr( elem, name, data[ name ] );\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tdataPriv.set( elem, \\\"hasDataAttrs\\\", true );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn data;\\n\\t\\t}\\n\\n\\t\\t// Sets multiple values\\n\\t\\tif ( typeof key === \\\"object\\\" ) {\\n\\t\\t\\treturn this.each( function() {\\n\\t\\t\\t\\tdataUser.set( this, key );\\n\\t\\t\\t} );\\n\\t\\t}\\n\\n\\t\\treturn access( this, function( value ) {\\n\\t\\t\\tvar data;\\n\\n\\t\\t\\t// The calling jQuery object (element matches) is not empty\\n\\t\\t\\t// (and therefore has an element appears at this[ 0 ]) and the\\n\\t\\t\\t// `value` parameter was not undefined. An empty jQuery object\\n\\t\\t\\t// will result in `undefined` for elem = this[ 0 ] which will\\n\\t\\t\\t// throw an exception if an attempt to read a data cache is made.\\n\\t\\t\\tif ( elem && value === undefined ) {\\n\\n\\t\\t\\t\\t// Attempt to get data from the cache\\n\\t\\t\\t\\t// The key will always be camelCased in Data\\n\\t\\t\\t\\tdata = dataUser.get( elem, key );\\n\\t\\t\\t\\tif ( data !== undefined ) {\\n\\t\\t\\t\\t\\treturn data;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Attempt to \\\"discover\\\" the data in\\n\\t\\t\\t\\t// HTML5 custom data-* attrs\\n\\t\\t\\t\\tdata = dataAttr( elem, key );\\n\\t\\t\\t\\tif ( data !== undefined ) {\\n\\t\\t\\t\\t\\treturn data;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// We tried really hard, but the data doesn't exist.\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Set the data...\\n\\t\\t\\tthis.each( function() {\\n\\n\\t\\t\\t\\t// We always store the camelCased key\\n\\t\\t\\t\\tdataUser.set( this, key, value );\\n\\t\\t\\t} );\\n\\t\\t}, null, value, arguments.length > 1, null, true );\\n\\t},\\n\\n\\tremoveData: function( key ) {\\n\\t\\treturn this.each( function() {\\n\\t\\t\\tdataUser.remove( this, key );\\n\\t\\t} );\\n\\t}\\n} );\\n\\n\\njQuery.extend( {\\n\\tqueue: function( elem, type, data ) {\\n\\t\\tvar queue;\\n\\n\\t\\tif ( elem ) {\\n\\t\\t\\ttype = ( type || \\\"fx\\\" ) + \\\"queue\\\";\\n\\t\\t\\tqueue = dataPriv.get( elem, type );\\n\\n\\t\\t\\t// Speed up dequeue by getting out quickly if this is just a lookup\\n\\t\\t\\tif ( data ) {\\n\\t\\t\\t\\tif ( !queue || Array.isArray( data ) ) {\\n\\t\\t\\t\\t\\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tqueue.push( data );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\treturn queue || [];\\n\\t\\t}\\n\\t},\\n\\n\\tdequeue: function( elem, type ) {\\n\\t\\ttype = type || \\\"fx\\\";\\n\\n\\t\\tvar queue = jQuery.queue( elem, type ),\\n\\t\\t\\tstartLength = queue.length,\\n\\t\\t\\tfn = queue.shift(),\\n\\t\\t\\thooks = jQuery._queueHooks( elem, type ),\\n\\t\\t\\tnext = function() {\\n\\t\\t\\t\\tjQuery.dequeue( elem, type );\\n\\t\\t\\t};\\n\\n\\t\\t// If the fx queue is dequeued, always remove the progress sentinel\\n\\t\\tif ( fn === \\\"inprogress\\\" ) {\\n\\t\\t\\tfn = queue.shift();\\n\\t\\t\\tstartLength--;\\n\\t\\t}\\n\\n\\t\\tif ( fn ) {\\n\\n\\t\\t\\t// Add a progress sentinel to prevent the fx queue from being\\n\\t\\t\\t// automatically dequeued\\n\\t\\t\\tif ( type === \\\"fx\\\" ) {\\n\\t\\t\\t\\tqueue.unshift( \\\"inprogress\\\" );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Clear up the last queue stop function\\n\\t\\t\\tdelete hooks.stop;\\n\\t\\t\\tfn.call( elem, next, hooks );\\n\\t\\t}\\n\\n\\t\\tif ( !startLength && hooks ) {\\n\\t\\t\\thooks.empty.fire();\\n\\t\\t}\\n\\t},\\n\\n\\t// Not public - generate a queueHooks object, or return the current one\\n\\t_queueHooks: function( elem, type ) {\\n\\t\\tvar key = type + \\\"queueHooks\\\";\\n\\t\\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\\n\\t\\t\\tempty: jQuery.Callbacks( \\\"once memory\\\" ).add( function() {\\n\\t\\t\\t\\tdataPriv.remove( elem, [ type + \\\"queue\\\", key ] );\\n\\t\\t\\t} )\\n\\t\\t} );\\n\\t}\\n} );\\n\\njQuery.fn.extend( {\\n\\tqueue: function( type, data ) {\\n\\t\\tvar setter = 2;\\n\\n\\t\\tif ( typeof type !== \\\"string\\\" ) {\\n\\t\\t\\tdata = type;\\n\\t\\t\\ttype = \\\"fx\\\";\\n\\t\\t\\tsetter--;\\n\\t\\t}\\n\\n\\t\\tif ( arguments.length < setter ) {\\n\\t\\t\\treturn jQuery.queue( this[ 0 ], type );\\n\\t\\t}\\n\\n\\t\\treturn data === undefined ?\\n\\t\\t\\tthis :\\n\\t\\t\\tthis.each( function() {\\n\\t\\t\\t\\tvar queue = jQuery.queue( this, type, data );\\n\\n\\t\\t\\t\\t// Ensure a hooks for this queue\\n\\t\\t\\t\\tjQuery._queueHooks( this, type );\\n\\n\\t\\t\\t\\tif ( type === \\\"fx\\\" && queue[ 0 ] !== \\\"inprogress\\\" ) {\\n\\t\\t\\t\\t\\tjQuery.dequeue( this, type );\\n\\t\\t\\t\\t}\\n\\t\\t\\t} );\\n\\t},\\n\\tdequeue: function( type ) {\\n\\t\\treturn this.each( function() {\\n\\t\\t\\tjQuery.dequeue( this, type );\\n\\t\\t} );\\n\\t},\\n\\tclearQueue: function( type ) {\\n\\t\\treturn this.queue( type || \\\"fx\\\", [] );\\n\\t},\\n\\n\\t// Get a promise resolved when queues of a certain type\\n\\t// are emptied (fx is the type by default)\\n\\tpromise: function( type, obj ) {\\n\\t\\tvar tmp,\\n\\t\\t\\tcount = 1,\\n\\t\\t\\tdefer = jQuery.Deferred(),\\n\\t\\t\\telements = this,\\n\\t\\t\\ti = this.length,\\n\\t\\t\\tresolve = function() {\\n\\t\\t\\t\\tif ( !( --count ) ) {\\n\\t\\t\\t\\t\\tdefer.resolveWith( elements, [ elements ] );\\n\\t\\t\\t\\t}\\n\\t\\t\\t};\\n\\n\\t\\tif ( typeof type !== \\\"string\\\" ) {\\n\\t\\t\\tobj = type;\\n\\t\\t\\ttype = undefined;\\n\\t\\t}\\n\\t\\ttype = type || \\\"fx\\\";\\n\\n\\t\\twhile ( i-- ) {\\n\\t\\t\\ttmp = dataPriv.get( elements[ i ], type + \\\"queueHooks\\\" );\\n\\t\\t\\tif ( tmp && tmp.empty ) {\\n\\t\\t\\t\\tcount++;\\n\\t\\t\\t\\ttmp.empty.add( resolve );\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tresolve();\\n\\t\\treturn defer.promise( obj );\\n\\t}\\n} );\\nvar pnum = ( /[+-]?(?:\\\\d*\\\\.|)\\\\d+(?:[eE][+-]?\\\\d+|)/ ).source;\\n\\nvar rcssNum = new RegExp( \\\"^(?:([+-])=|)(\\\" + pnum + \\\")([a-z%]*)$\\\", \\\"i\\\" );\\n\\n\\nvar cssExpand = [ \\\"Top\\\", \\\"Right\\\", \\\"Bottom\\\", \\\"Left\\\" ];\\n\\nvar documentElement = document.documentElement;\\n\\n\\n\\n\\tvar isAttached = function( elem ) {\\n\\t\\t\\treturn jQuery.contains( elem.ownerDocument, elem );\\n\\t\\t},\\n\\t\\tcomposed = { composed: true };\\n\\n\\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\\n\\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\\n\\t// Support: iOS 10.0-10.2 only\\n\\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\\n\\t// leading to errors. We need to check for `getRootNode`.\\n\\tif ( documentElement.getRootNode ) {\\n\\t\\tisAttached = function( elem ) {\\n\\t\\t\\treturn jQuery.contains( elem.ownerDocument, elem ) ||\\n\\t\\t\\t\\telem.getRootNode( composed ) === elem.ownerDocument;\\n\\t\\t};\\n\\t}\\nvar isHiddenWithinTree = function( elem, el ) {\\n\\n\\t\\t// isHiddenWithinTree might be called from jQuery#filter function;\\n\\t\\t// in that case, element will be second argument\\n\\t\\telem = el || elem;\\n\\n\\t\\t// Inline style trumps all\\n\\t\\treturn elem.style.display === \\\"none\\\" ||\\n\\t\\t\\telem.style.display === \\\"\\\" &&\\n\\n\\t\\t\\t// Otherwise, check computed style\\n\\t\\t\\t// Support: Firefox <=43 - 45\\n\\t\\t\\t// Disconnected elements can have computed display: none, so first confirm that elem is\\n\\t\\t\\t// in the document.\\n\\t\\t\\tisAttached( elem ) &&\\n\\n\\t\\t\\tjQuery.css( elem, \\\"display\\\" ) === \\\"none\\\";\\n\\t};\\n\\n\\n\\nfunction adjustCSS( elem, prop, valueParts, tween ) {\\n\\tvar adjusted, scale,\\n\\t\\tmaxIterations = 20,\\n\\t\\tcurrentValue = tween ?\\n\\t\\t\\tfunction() {\\n\\t\\t\\t\\treturn tween.cur();\\n\\t\\t\\t} :\\n\\t\\t\\tfunction() {\\n\\t\\t\\t\\treturn jQuery.css( elem, prop, \\\"\\\" );\\n\\t\\t\\t},\\n\\t\\tinitial = currentValue(),\\n\\t\\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \\\"\\\" : \\\"px\\\" ),\\n\\n\\t\\t// Starting value computation is required for potential unit mismatches\\n\\t\\tinitialInUnit = elem.nodeType &&\\n\\t\\t\\t( jQuery.cssNumber[ prop ] || unit !== \\\"px\\\" && +initial ) &&\\n\\t\\t\\trcssNum.exec( jQuery.css( elem, prop ) );\\n\\n\\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\\n\\n\\t\\t// Support: Firefox <=54\\n\\t\\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\\n\\t\\tinitial = initial / 2;\\n\\n\\t\\t// Trust units reported by jQuery.css\\n\\t\\tunit = unit || initialInUnit[ 3 ];\\n\\n\\t\\t// Iteratively approximate from a nonzero starting point\\n\\t\\tinitialInUnit = +initial || 1;\\n\\n\\t\\twhile ( maxIterations-- ) {\\n\\n\\t\\t\\t// Evaluate and update our best guess (doubling guesses that zero out).\\n\\t\\t\\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\\n\\t\\t\\tjQuery.style( elem, prop, initialInUnit + unit );\\n\\t\\t\\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\\n\\t\\t\\t\\tmaxIterations = 0;\\n\\t\\t\\t}\\n\\t\\t\\tinitialInUnit = initialInUnit / scale;\\n\\n\\t\\t}\\n\\n\\t\\tinitialInUnit = initialInUnit * 2;\\n\\t\\tjQuery.style( elem, prop, initialInUnit + unit );\\n\\n\\t\\t// Make sure we update the tween properties later on\\n\\t\\tvalueParts = valueParts || [];\\n\\t}\\n\\n\\tif ( valueParts ) {\\n\\t\\tinitialInUnit = +initialInUnit || +initial || 0;\\n\\n\\t\\t// Apply relative offset (+=/-=) if specified\\n\\t\\tadjusted = valueParts[ 1 ] ?\\n\\t\\t\\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\\n\\t\\t\\t+valueParts[ 2 ];\\n\\t\\tif ( tween ) {\\n\\t\\t\\ttween.unit = unit;\\n\\t\\t\\ttween.start = initialInUnit;\\n\\t\\t\\ttween.end = adjusted;\\n\\t\\t}\\n\\t}\\n\\treturn adjusted;\\n}\\n\\n\\nvar defaultDisplayMap = {};\\n\\nfunction getDefaultDisplay( elem ) {\\n\\tvar temp,\\n\\t\\tdoc = elem.ownerDocument,\\n\\t\\tnodeName = elem.nodeName,\\n\\t\\tdisplay = defaultDisplayMap[ nodeName ];\\n\\n\\tif ( display ) {\\n\\t\\treturn display;\\n\\t}\\n\\n\\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\\n\\tdisplay = jQuery.css( temp, \\\"display\\\" );\\n\\n\\ttemp.parentNode.removeChild( temp );\\n\\n\\tif ( display === \\\"none\\\" ) {\\n\\t\\tdisplay = \\\"block\\\";\\n\\t}\\n\\tdefaultDisplayMap[ nodeName ] = display;\\n\\n\\treturn display;\\n}\\n\\nfunction showHide( elements, show ) {\\n\\tvar display, elem,\\n\\t\\tvalues = [],\\n\\t\\tindex = 0,\\n\\t\\tlength = elements.length;\\n\\n\\t// Determine new display value for elements that need to change\\n\\tfor ( ; index < length; index++ ) {\\n\\t\\telem = elements[ index ];\\n\\t\\tif ( !elem.style ) {\\n\\t\\t\\tcontinue;\\n\\t\\t}\\n\\n\\t\\tdisplay = elem.style.display;\\n\\t\\tif ( show ) {\\n\\n\\t\\t\\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\\n\\t\\t\\t// check is required in this first loop unless we have a nonempty display value (either\\n\\t\\t\\t// inline or about-to-be-restored)\\n\\t\\t\\tif ( display === \\\"none\\\" ) {\\n\\t\\t\\t\\tvalues[ index ] = dataPriv.get( elem, \\\"display\\\" ) || null;\\n\\t\\t\\t\\tif ( !values[ index ] ) {\\n\\t\\t\\t\\t\\telem.style.display = \\\"\\\";\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tif ( elem.style.display === \\\"\\\" && isHiddenWithinTree( elem ) ) {\\n\\t\\t\\t\\tvalues[ index ] = getDefaultDisplay( elem );\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\tif ( display !== \\\"none\\\" ) {\\n\\t\\t\\t\\tvalues[ index ] = \\\"none\\\";\\n\\n\\t\\t\\t\\t// Remember what we're overwriting\\n\\t\\t\\t\\tdataPriv.set( elem, \\\"display\\\", display );\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// Set the display of the elements in a second loop to avoid constant reflow\\n\\tfor ( index = 0; index < length; index++ ) {\\n\\t\\tif ( values[ index ] != null ) {\\n\\t\\t\\telements[ index ].style.display = values[ index ];\\n\\t\\t}\\n\\t}\\n\\n\\treturn elements;\\n}\\n\\njQuery.fn.extend( {\\n\\tshow: function() {\\n\\t\\treturn showHide( this, true );\\n\\t},\\n\\thide: function() {\\n\\t\\treturn showHide( this );\\n\\t},\\n\\ttoggle: function( state ) {\\n\\t\\tif ( typeof state === \\\"boolean\\\" ) {\\n\\t\\t\\treturn state ? this.show() : this.hide();\\n\\t\\t}\\n\\n\\t\\treturn this.each( function() {\\n\\t\\t\\tif ( isHiddenWithinTree( this ) ) {\\n\\t\\t\\t\\tjQuery( this ).show();\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tjQuery( this ).hide();\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t}\\n} );\\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\\n\\nvar rtagName = ( /<([a-z][^\\\\/\\\\0>\\\\x20\\\\t\\\\r\\\\n\\\\f]*)/i );\\n\\nvar rscriptType = ( /^$|^module$|\\\\/(?:java|ecma)script/i );\\n\\n\\n\\n( function() {\\n\\tvar fragment = document.createDocumentFragment(),\\n\\t\\tdiv = fragment.appendChild( document.createElement( \\\"div\\\" ) ),\\n\\t\\tinput = document.createElement( \\\"input\\\" );\\n\\n\\t// Support: Android 4.0 - 4.3 only\\n\\t// Check state lost if the name is set (trac-11217)\\n\\t// Support: Windows Web Apps (WWA)\\n\\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\\n\\tinput.setAttribute( \\\"type\\\", \\\"radio\\\" );\\n\\tinput.setAttribute( \\\"checked\\\", \\\"checked\\\" );\\n\\tinput.setAttribute( \\\"name\\\", \\\"t\\\" );\\n\\n\\tdiv.appendChild( input );\\n\\n\\t// Support: Android <=4.1 only\\n\\t// Older WebKit doesn't clone checked state correctly in fragments\\n\\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\\n\\n\\t// Support: IE <=11 only\\n\\t// Make sure textarea (and checkbox) defaultValue is properly cloned\\n\\tdiv.innerHTML = \\\"\\\";\\n\\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\\n\\n\\t// Support: IE <=9 only\\n\\t// IE <=9 replaces \\\";\\n\\tsupport.option = !!div.lastChild;\\n} )();\\n\\n\\n// We have to close these tags to support XHTML (trac-13200)\\nvar wrapMap = {\\n\\n\\t// XHTML parsers do not magically insert elements in the\\n\\t// same way that tag soup parsers do. So we cannot shorten\\n\\t// this by omitting or other required elements.\\n\\tthead: [ 1, \\\"\\\", \\\"
\\\" ],\\n\\tcol: [ 2, \\\"\\\", \\\"
\\\" ],\\n\\ttr: [ 2, \\\"\\\", \\\"
\\\" ],\\n\\ttd: [ 3, \\\"\\\", \\\"
\\\" ],\\n\\n\\t_default: [ 0, \\\"\\\", \\\"\\\" ]\\n};\\n\\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\\nwrapMap.th = wrapMap.td;\\n\\n// Support: IE <=9 only\\nif ( !support.option ) {\\n\\twrapMap.optgroup = wrapMap.option = [ 1, \\\"\\\" ];\\n}\\n\\n\\nfunction getAll( context, tag ) {\\n\\n\\t// Support: IE <=9 - 11 only\\n\\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\\n\\tvar ret;\\n\\n\\tif ( typeof context.getElementsByTagName !== \\\"undefined\\\" ) {\\n\\t\\tret = context.getElementsByTagName( tag || \\\"*\\\" );\\n\\n\\t} else if ( typeof context.querySelectorAll !== \\\"undefined\\\" ) {\\n\\t\\tret = context.querySelectorAll( tag || \\\"*\\\" );\\n\\n\\t} else {\\n\\t\\tret = [];\\n\\t}\\n\\n\\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\\n\\t\\treturn jQuery.merge( [ context ], ret );\\n\\t}\\n\\n\\treturn ret;\\n}\\n\\n\\n// Mark scripts as having already been evaluated\\nfunction setGlobalEval( elems, refElements ) {\\n\\tvar i = 0,\\n\\t\\tl = elems.length;\\n\\n\\tfor ( ; i < l; i++ ) {\\n\\t\\tdataPriv.set(\\n\\t\\t\\telems[ i ],\\n\\t\\t\\t\\\"globalEval\\\",\\n\\t\\t\\t!refElements || dataPriv.get( refElements[ i ], \\\"globalEval\\\" )\\n\\t\\t);\\n\\t}\\n}\\n\\n\\nvar rhtml = /<|&#?\\\\w+;/;\\n\\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\\n\\tvar elem, tmp, tag, wrap, attached, j,\\n\\t\\tfragment = context.createDocumentFragment(),\\n\\t\\tnodes = [],\\n\\t\\ti = 0,\\n\\t\\tl = elems.length;\\n\\n\\tfor ( ; i < l; i++ ) {\\n\\t\\telem = elems[ i ];\\n\\n\\t\\tif ( elem || elem === 0 ) {\\n\\n\\t\\t\\t// Add nodes directly\\n\\t\\t\\tif ( toType( elem ) === \\\"object\\\" ) {\\n\\n\\t\\t\\t\\t// Support: Android <=4.0 only, PhantomJS 1 only\\n\\t\\t\\t\\t// push.apply(_, arraylike) throws on ancient WebKit\\n\\t\\t\\t\\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\\n\\n\\t\\t\\t// Convert non-html into a text node\\n\\t\\t\\t} else if ( !rhtml.test( elem ) ) {\\n\\t\\t\\t\\tnodes.push( context.createTextNode( elem ) );\\n\\n\\t\\t\\t// Convert html into DOM nodes\\n\\t\\t\\t} else {\\n\\t\\t\\t\\ttmp = tmp || fragment.appendChild( context.createElement( \\\"div\\\" ) );\\n\\n\\t\\t\\t\\t// Deserialize a standard representation\\n\\t\\t\\t\\ttag = ( rtagName.exec( elem ) || [ \\\"\\\", \\\"\\\" ] )[ 1 ].toLowerCase();\\n\\t\\t\\t\\twrap = wrapMap[ tag ] || wrapMap._default;\\n\\t\\t\\t\\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\\n\\n\\t\\t\\t\\t// Descend through wrappers to the right content\\n\\t\\t\\t\\tj = wrap[ 0 ];\\n\\t\\t\\t\\twhile ( j-- ) {\\n\\t\\t\\t\\t\\ttmp = tmp.lastChild;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Support: Android <=4.0 only, PhantomJS 1 only\\n\\t\\t\\t\\t// push.apply(_, arraylike) throws on ancient WebKit\\n\\t\\t\\t\\tjQuery.merge( nodes, tmp.childNodes );\\n\\n\\t\\t\\t\\t// Remember the top-level container\\n\\t\\t\\t\\ttmp = fragment.firstChild;\\n\\n\\t\\t\\t\\t// Ensure the created nodes are orphaned (trac-12392)\\n\\t\\t\\t\\ttmp.textContent = \\\"\\\";\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// Remove wrapper from fragment\\n\\tfragment.textContent = \\\"\\\";\\n\\n\\ti = 0;\\n\\twhile ( ( elem = nodes[ i++ ] ) ) {\\n\\n\\t\\t// Skip elements already in the context collection (trac-4087)\\n\\t\\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\\n\\t\\t\\tif ( ignored ) {\\n\\t\\t\\t\\tignored.push( elem );\\n\\t\\t\\t}\\n\\t\\t\\tcontinue;\\n\\t\\t}\\n\\n\\t\\tattached = isAttached( elem );\\n\\n\\t\\t// Append to fragment\\n\\t\\ttmp = getAll( fragment.appendChild( elem ), \\\"script\\\" );\\n\\n\\t\\t// Preserve script evaluation history\\n\\t\\tif ( attached ) {\\n\\t\\t\\tsetGlobalEval( tmp );\\n\\t\\t}\\n\\n\\t\\t// Capture executables\\n\\t\\tif ( scripts ) {\\n\\t\\t\\tj = 0;\\n\\t\\t\\twhile ( ( elem = tmp[ j++ ] ) ) {\\n\\t\\t\\t\\tif ( rscriptType.test( elem.type || \\\"\\\" ) ) {\\n\\t\\t\\t\\t\\tscripts.push( elem );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\treturn fragment;\\n}\\n\\n\\nvar rtypenamespace = /^([^.]*)(?:\\\\.(.+)|)/;\\n\\nfunction returnTrue() {\\n\\treturn true;\\n}\\n\\nfunction returnFalse() {\\n\\treturn false;\\n}\\n\\nfunction on( elem, types, selector, data, fn, one ) {\\n\\tvar origFn, type;\\n\\n\\t// Types can be a map of types/handlers\\n\\tif ( typeof types === \\\"object\\\" ) {\\n\\n\\t\\t// ( types-Object, selector, data )\\n\\t\\tif ( typeof selector !== \\\"string\\\" ) {\\n\\n\\t\\t\\t// ( types-Object, data )\\n\\t\\t\\tdata = data || selector;\\n\\t\\t\\tselector = undefined;\\n\\t\\t}\\n\\t\\tfor ( type in types ) {\\n\\t\\t\\ton( elem, type, selector, data, types[ type ], one );\\n\\t\\t}\\n\\t\\treturn elem;\\n\\t}\\n\\n\\tif ( data == null && fn == null ) {\\n\\n\\t\\t// ( types, fn )\\n\\t\\tfn = selector;\\n\\t\\tdata = selector = undefined;\\n\\t} else if ( fn == null ) {\\n\\t\\tif ( typeof selector === \\\"string\\\" ) {\\n\\n\\t\\t\\t// ( types, selector, fn )\\n\\t\\t\\tfn = data;\\n\\t\\t\\tdata = undefined;\\n\\t\\t} else {\\n\\n\\t\\t\\t// ( types, data, fn )\\n\\t\\t\\tfn = data;\\n\\t\\t\\tdata = selector;\\n\\t\\t\\tselector = undefined;\\n\\t\\t}\\n\\t}\\n\\tif ( fn === false ) {\\n\\t\\tfn = returnFalse;\\n\\t} else if ( !fn ) {\\n\\t\\treturn elem;\\n\\t}\\n\\n\\tif ( one === 1 ) {\\n\\t\\torigFn = fn;\\n\\t\\tfn = function( event ) {\\n\\n\\t\\t\\t// Can use an empty set, since event contains the info\\n\\t\\t\\tjQuery().off( event );\\n\\t\\t\\treturn origFn.apply( this, arguments );\\n\\t\\t};\\n\\n\\t\\t// Use same guid so caller can remove using origFn\\n\\t\\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\\n\\t}\\n\\treturn elem.each( function() {\\n\\t\\tjQuery.event.add( this, types, fn, data, selector );\\n\\t} );\\n}\\n\\n/*\\n * Helper functions for managing events -- not part of the public interface.\\n * Props to Dean Edwards' addEvent library for many of the ideas.\\n */\\njQuery.event = {\\n\\n\\tglobal: {},\\n\\n\\tadd: function( elem, types, handler, data, selector ) {\\n\\n\\t\\tvar handleObjIn, eventHandle, tmp,\\n\\t\\t\\tevents, t, handleObj,\\n\\t\\t\\tspecial, handlers, type, namespaces, origType,\\n\\t\\t\\telemData = dataPriv.get( elem );\\n\\n\\t\\t// Only attach events to objects that accept data\\n\\t\\tif ( !acceptData( elem ) ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\t// Caller can pass in an object of custom data in lieu of the handler\\n\\t\\tif ( handler.handler ) {\\n\\t\\t\\thandleObjIn = handler;\\n\\t\\t\\thandler = handleObjIn.handler;\\n\\t\\t\\tselector = handleObjIn.selector;\\n\\t\\t}\\n\\n\\t\\t// Ensure that invalid selectors throw exceptions at attach time\\n\\t\\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\\n\\t\\tif ( selector ) {\\n\\t\\t\\tjQuery.find.matchesSelector( documentElement, selector );\\n\\t\\t}\\n\\n\\t\\t// Make sure that the handler has a unique ID, used to find/remove it later\\n\\t\\tif ( !handler.guid ) {\\n\\t\\t\\thandler.guid = jQuery.guid++;\\n\\t\\t}\\n\\n\\t\\t// Init the element's event structure and main handler, if this is the first\\n\\t\\tif ( !( events = elemData.events ) ) {\\n\\t\\t\\tevents = elemData.events = Object.create( null );\\n\\t\\t}\\n\\t\\tif ( !( eventHandle = elemData.handle ) ) {\\n\\t\\t\\teventHandle = elemData.handle = function( e ) {\\n\\n\\t\\t\\t\\t// Discard the second event of a jQuery.event.trigger() and\\n\\t\\t\\t\\t// when an event is called after a page has unloaded\\n\\t\\t\\t\\treturn typeof jQuery !== \\\"undefined\\\" && jQuery.event.triggered !== e.type ?\\n\\t\\t\\t\\t\\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\\n\\t\\t\\t};\\n\\t\\t}\\n\\n\\t\\t// Handle multiple events separated by a space\\n\\t\\ttypes = ( types || \\\"\\\" ).match( rnothtmlwhite ) || [ \\\"\\\" ];\\n\\t\\tt = types.length;\\n\\t\\twhile ( t-- ) {\\n\\t\\t\\ttmp = rtypenamespace.exec( types[ t ] ) || [];\\n\\t\\t\\ttype = origType = tmp[ 1 ];\\n\\t\\t\\tnamespaces = ( tmp[ 2 ] || \\\"\\\" ).split( \\\".\\\" ).sort();\\n\\n\\t\\t\\t// There *must* be a type, no attaching namespace-only handlers\\n\\t\\t\\tif ( !type ) {\\n\\t\\t\\t\\tcontinue;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// If event changes its type, use the special event handlers for the changed type\\n\\t\\t\\tspecial = jQuery.event.special[ type ] || {};\\n\\n\\t\\t\\t// If selector defined, determine special event api type, otherwise given type\\n\\t\\t\\ttype = ( selector ? special.delegateType : special.bindType ) || type;\\n\\n\\t\\t\\t// Update special based on newly reset type\\n\\t\\t\\tspecial = jQuery.event.special[ type ] || {};\\n\\n\\t\\t\\t// handleObj is passed to all event handlers\\n\\t\\t\\thandleObj = jQuery.extend( {\\n\\t\\t\\t\\ttype: type,\\n\\t\\t\\t\\torigType: origType,\\n\\t\\t\\t\\tdata: data,\\n\\t\\t\\t\\thandler: handler,\\n\\t\\t\\t\\tguid: handler.guid,\\n\\t\\t\\t\\tselector: selector,\\n\\t\\t\\t\\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\\n\\t\\t\\t\\tnamespace: namespaces.join( \\\".\\\" )\\n\\t\\t\\t}, handleObjIn );\\n\\n\\t\\t\\t// Init the event handler queue if we're the first\\n\\t\\t\\tif ( !( handlers = events[ type ] ) ) {\\n\\t\\t\\t\\thandlers = events[ type ] = [];\\n\\t\\t\\t\\thandlers.delegateCount = 0;\\n\\n\\t\\t\\t\\t// Only use addEventListener if the special events handler returns false\\n\\t\\t\\t\\tif ( !special.setup ||\\n\\t\\t\\t\\t\\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\\n\\n\\t\\t\\t\\t\\tif ( elem.addEventListener ) {\\n\\t\\t\\t\\t\\t\\telem.addEventListener( type, eventHandle );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( special.add ) {\\n\\t\\t\\t\\tspecial.add.call( elem, handleObj );\\n\\n\\t\\t\\t\\tif ( !handleObj.handler.guid ) {\\n\\t\\t\\t\\t\\thandleObj.handler.guid = handler.guid;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Add to the element's handler list, delegates in front\\n\\t\\t\\tif ( selector ) {\\n\\t\\t\\t\\thandlers.splice( handlers.delegateCount++, 0, handleObj );\\n\\t\\t\\t} else {\\n\\t\\t\\t\\thandlers.push( handleObj );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Keep track of which events have ever been used, for event optimization\\n\\t\\t\\tjQuery.event.global[ type ] = true;\\n\\t\\t}\\n\\n\\t},\\n\\n\\t// Detach an event or set of events from an element\\n\\tremove: function( elem, types, handler, selector, mappedTypes ) {\\n\\n\\t\\tvar j, origCount, tmp,\\n\\t\\t\\tevents, t, handleObj,\\n\\t\\t\\tspecial, handlers, type, namespaces, origType,\\n\\t\\t\\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\\n\\n\\t\\tif ( !elemData || !( events = elemData.events ) ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\t// Once for each type.namespace in types; type may be omitted\\n\\t\\ttypes = ( types || \\\"\\\" ).match( rnothtmlwhite ) || [ \\\"\\\" ];\\n\\t\\tt = types.length;\\n\\t\\twhile ( t-- ) {\\n\\t\\t\\ttmp = rtypenamespace.exec( types[ t ] ) || [];\\n\\t\\t\\ttype = origType = tmp[ 1 ];\\n\\t\\t\\tnamespaces = ( tmp[ 2 ] || \\\"\\\" ).split( \\\".\\\" ).sort();\\n\\n\\t\\t\\t// Unbind all events (on this namespace, if provided) for the element\\n\\t\\t\\tif ( !type ) {\\n\\t\\t\\t\\tfor ( type in events ) {\\n\\t\\t\\t\\t\\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tcontinue;\\n\\t\\t\\t}\\n\\n\\t\\t\\tspecial = jQuery.event.special[ type ] || {};\\n\\t\\t\\ttype = ( selector ? special.delegateType : special.bindType ) || type;\\n\\t\\t\\thandlers = events[ type ] || [];\\n\\t\\t\\ttmp = tmp[ 2 ] &&\\n\\t\\t\\t\\tnew RegExp( \\\"(^|\\\\\\\\.)\\\" + namespaces.join( \\\"\\\\\\\\.(?:.*\\\\\\\\.|)\\\" ) + \\\"(\\\\\\\\.|$)\\\" );\\n\\n\\t\\t\\t// Remove matching events\\n\\t\\t\\torigCount = j = handlers.length;\\n\\t\\t\\twhile ( j-- ) {\\n\\t\\t\\t\\thandleObj = handlers[ j ];\\n\\n\\t\\t\\t\\tif ( ( mappedTypes || origType === handleObj.origType ) &&\\n\\t\\t\\t\\t\\t( !handler || handler.guid === handleObj.guid ) &&\\n\\t\\t\\t\\t\\t( !tmp || tmp.test( handleObj.namespace ) ) &&\\n\\t\\t\\t\\t\\t( !selector || selector === handleObj.selector ||\\n\\t\\t\\t\\t\\t\\tselector === \\\"**\\\" && handleObj.selector ) ) {\\n\\t\\t\\t\\t\\thandlers.splice( j, 1 );\\n\\n\\t\\t\\t\\t\\tif ( handleObj.selector ) {\\n\\t\\t\\t\\t\\t\\thandlers.delegateCount--;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tif ( special.remove ) {\\n\\t\\t\\t\\t\\t\\tspecial.remove.call( elem, handleObj );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Remove generic event handler if we removed something and no more handlers exist\\n\\t\\t\\t// (avoids potential for endless recursion during removal of special event handlers)\\n\\t\\t\\tif ( origCount && !handlers.length ) {\\n\\t\\t\\t\\tif ( !special.teardown ||\\n\\t\\t\\t\\t\\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\\n\\n\\t\\t\\t\\t\\tjQuery.removeEvent( elem, type, elemData.handle );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tdelete events[ type ];\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Remove data and the expando if it's no longer used\\n\\t\\tif ( jQuery.isEmptyObject( events ) ) {\\n\\t\\t\\tdataPriv.remove( elem, \\\"handle events\\\" );\\n\\t\\t}\\n\\t},\\n\\n\\tdispatch: function( nativeEvent ) {\\n\\n\\t\\tvar i, j, ret, matched, handleObj, handlerQueue,\\n\\t\\t\\targs = new Array( arguments.length ),\\n\\n\\t\\t\\t// Make a writable jQuery.Event from the native event object\\n\\t\\t\\tevent = jQuery.event.fix( nativeEvent ),\\n\\n\\t\\t\\thandlers = (\\n\\t\\t\\t\\tdataPriv.get( this, \\\"events\\\" ) || Object.create( null )\\n\\t\\t\\t)[ event.type ] || [],\\n\\t\\t\\tspecial = jQuery.event.special[ event.type ] || {};\\n\\n\\t\\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\\n\\t\\targs[ 0 ] = event;\\n\\n\\t\\tfor ( i = 1; i < arguments.length; i++ ) {\\n\\t\\t\\targs[ i ] = arguments[ i ];\\n\\t\\t}\\n\\n\\t\\tevent.delegateTarget = this;\\n\\n\\t\\t// Call the preDispatch hook for the mapped type, and let it bail if desired\\n\\t\\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\t// Determine handlers\\n\\t\\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\\n\\n\\t\\t// Run delegates first; they may want to stop propagation beneath us\\n\\t\\ti = 0;\\n\\t\\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\\n\\t\\t\\tevent.currentTarget = matched.elem;\\n\\n\\t\\t\\tj = 0;\\n\\t\\t\\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\\n\\t\\t\\t\\t!event.isImmediatePropagationStopped() ) {\\n\\n\\t\\t\\t\\t// If the event is namespaced, then each handler is only invoked if it is\\n\\t\\t\\t\\t// specially universal or its namespaces are a superset of the event's.\\n\\t\\t\\t\\tif ( !event.rnamespace || handleObj.namespace === false ||\\n\\t\\t\\t\\t\\tevent.rnamespace.test( handleObj.namespace ) ) {\\n\\n\\t\\t\\t\\t\\tevent.handleObj = handleObj;\\n\\t\\t\\t\\t\\tevent.data = handleObj.data;\\n\\n\\t\\t\\t\\t\\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\\n\\t\\t\\t\\t\\t\\thandleObj.handler ).apply( matched.elem, args );\\n\\n\\t\\t\\t\\t\\tif ( ret !== undefined ) {\\n\\t\\t\\t\\t\\t\\tif ( ( event.result = ret ) === false ) {\\n\\t\\t\\t\\t\\t\\t\\tevent.preventDefault();\\n\\t\\t\\t\\t\\t\\t\\tevent.stopPropagation();\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Call the postDispatch hook for the mapped type\\n\\t\\tif ( special.postDispatch ) {\\n\\t\\t\\tspecial.postDispatch.call( this, event );\\n\\t\\t}\\n\\n\\t\\treturn event.result;\\n\\t},\\n\\n\\thandlers: function( event, handlers ) {\\n\\t\\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\\n\\t\\t\\thandlerQueue = [],\\n\\t\\t\\tdelegateCount = handlers.delegateCount,\\n\\t\\t\\tcur = event.target;\\n\\n\\t\\t// Find delegate handlers\\n\\t\\tif ( delegateCount &&\\n\\n\\t\\t\\t// Support: IE <=9\\n\\t\\t\\t// Black-hole SVG instance trees (trac-13180)\\n\\t\\t\\tcur.nodeType &&\\n\\n\\t\\t\\t// Support: Firefox <=42\\n\\t\\t\\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\\n\\t\\t\\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\\n\\t\\t\\t// Support: IE 11 only\\n\\t\\t\\t// ...but not arrow key \\\"clicks\\\" of radio inputs, which can have `button` -1 (gh-2343)\\n\\t\\t\\t!( event.type === \\\"click\\\" && event.button >= 1 ) ) {\\n\\n\\t\\t\\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\\n\\n\\t\\t\\t\\t// Don't check non-elements (trac-13208)\\n\\t\\t\\t\\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\\n\\t\\t\\t\\tif ( cur.nodeType === 1 && !( event.type === \\\"click\\\" && cur.disabled === true ) ) {\\n\\t\\t\\t\\t\\tmatchedHandlers = [];\\n\\t\\t\\t\\t\\tmatchedSelectors = {};\\n\\t\\t\\t\\t\\tfor ( i = 0; i < delegateCount; i++ ) {\\n\\t\\t\\t\\t\\t\\thandleObj = handlers[ i ];\\n\\n\\t\\t\\t\\t\\t\\t// Don't conflict with Object.prototype properties (trac-13203)\\n\\t\\t\\t\\t\\t\\tsel = handleObj.selector + \\\" \\\";\\n\\n\\t\\t\\t\\t\\t\\tif ( matchedSelectors[ sel ] === undefined ) {\\n\\t\\t\\t\\t\\t\\t\\tmatchedSelectors[ sel ] = handleObj.needsContext ?\\n\\t\\t\\t\\t\\t\\t\\t\\tjQuery( sel, this ).index( cur ) > -1 :\\n\\t\\t\\t\\t\\t\\t\\t\\tjQuery.find( sel, this, null, [ cur ] ).length;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\tif ( matchedSelectors[ sel ] ) {\\n\\t\\t\\t\\t\\t\\t\\tmatchedHandlers.push( handleObj );\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tif ( matchedHandlers.length ) {\\n\\t\\t\\t\\t\\t\\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Add the remaining (directly-bound) handlers\\n\\t\\tcur = this;\\n\\t\\tif ( delegateCount < handlers.length ) {\\n\\t\\t\\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\\n\\t\\t}\\n\\n\\t\\treturn handlerQueue;\\n\\t},\\n\\n\\taddProp: function( name, hook ) {\\n\\t\\tObject.defineProperty( jQuery.Event.prototype, name, {\\n\\t\\t\\tenumerable: true,\\n\\t\\t\\tconfigurable: true,\\n\\n\\t\\t\\tget: isFunction( hook ) ?\\n\\t\\t\\t\\tfunction() {\\n\\t\\t\\t\\t\\tif ( this.originalEvent ) {\\n\\t\\t\\t\\t\\t\\treturn hook( this.originalEvent );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t} :\\n\\t\\t\\t\\tfunction() {\\n\\t\\t\\t\\t\\tif ( this.originalEvent ) {\\n\\t\\t\\t\\t\\t\\treturn this.originalEvent[ name ];\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\tset: function( value ) {\\n\\t\\t\\t\\tObject.defineProperty( this, name, {\\n\\t\\t\\t\\t\\tenumerable: true,\\n\\t\\t\\t\\t\\tconfigurable: true,\\n\\t\\t\\t\\t\\twritable: true,\\n\\t\\t\\t\\t\\tvalue: value\\n\\t\\t\\t\\t} );\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t},\\n\\n\\tfix: function( originalEvent ) {\\n\\t\\treturn originalEvent[ jQuery.expando ] ?\\n\\t\\t\\toriginalEvent :\\n\\t\\t\\tnew jQuery.Event( originalEvent );\\n\\t},\\n\\n\\tspecial: {\\n\\t\\tload: {\\n\\n\\t\\t\\t// Prevent triggered image.load events from bubbling to window.load\\n\\t\\t\\tnoBubble: true\\n\\t\\t},\\n\\t\\tclick: {\\n\\n\\t\\t\\t// Utilize native event to ensure correct state for checkable inputs\\n\\t\\t\\tsetup: function( data ) {\\n\\n\\t\\t\\t\\t// For mutual compressibility with _default, replace `this` access with a local var.\\n\\t\\t\\t\\t// `|| data` is dead code meant only to preserve the variable through minification.\\n\\t\\t\\t\\tvar el = this || data;\\n\\n\\t\\t\\t\\t// Claim the first handler\\n\\t\\t\\t\\tif ( rcheckableType.test( el.type ) &&\\n\\t\\t\\t\\t\\tel.click && nodeName( el, \\\"input\\\" ) ) {\\n\\n\\t\\t\\t\\t\\t// dataPriv.set( el, \\\"click\\\", ... )\\n\\t\\t\\t\\t\\tleverageNative( el, \\\"click\\\", true );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Return false to allow normal processing in the caller\\n\\t\\t\\t\\treturn false;\\n\\t\\t\\t},\\n\\t\\t\\ttrigger: function( data ) {\\n\\n\\t\\t\\t\\t// For mutual compressibility with _default, replace `this` access with a local var.\\n\\t\\t\\t\\t// `|| data` is dead code meant only to preserve the variable through minification.\\n\\t\\t\\t\\tvar el = this || data;\\n\\n\\t\\t\\t\\t// Force setup before triggering a click\\n\\t\\t\\t\\tif ( rcheckableType.test( el.type ) &&\\n\\t\\t\\t\\t\\tel.click && nodeName( el, \\\"input\\\" ) ) {\\n\\n\\t\\t\\t\\t\\tleverageNative( el, \\\"click\\\" );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Return non-false to allow normal event-path propagation\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t},\\n\\n\\t\\t\\t// For cross-browser consistency, suppress native .click() on links\\n\\t\\t\\t// Also prevent it if we're currently inside a leveraged native-event stack\\n\\t\\t\\t_default: function( event ) {\\n\\t\\t\\t\\tvar target = event.target;\\n\\t\\t\\t\\treturn rcheckableType.test( target.type ) &&\\n\\t\\t\\t\\t\\ttarget.click && nodeName( target, \\\"input\\\" ) &&\\n\\t\\t\\t\\t\\tdataPriv.get( target, \\\"click\\\" ) ||\\n\\t\\t\\t\\t\\tnodeName( target, \\\"a\\\" );\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\tbeforeunload: {\\n\\t\\t\\tpostDispatch: function( event ) {\\n\\n\\t\\t\\t\\t// Support: Firefox 20+\\n\\t\\t\\t\\t// Firefox doesn't alert if the returnValue field is not set.\\n\\t\\t\\t\\tif ( event.result !== undefined && event.originalEvent ) {\\n\\t\\t\\t\\t\\tevent.originalEvent.returnValue = event.result;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n};\\n\\n// Ensure the presence of an event listener that handles manually-triggered\\n// synthetic events by interrupting progress until reinvoked in response to\\n// *native* events that it fires directly, ensuring that state changes have\\n// already occurred before other listeners are invoked.\\nfunction leverageNative( el, type, isSetup ) {\\n\\n\\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\\n\\tif ( !isSetup ) {\\n\\t\\tif ( dataPriv.get( el, type ) === undefined ) {\\n\\t\\t\\tjQuery.event.add( el, type, returnTrue );\\n\\t\\t}\\n\\t\\treturn;\\n\\t}\\n\\n\\t// Register the controller as a special universal handler for all event namespaces\\n\\tdataPriv.set( el, type, false );\\n\\tjQuery.event.add( el, type, {\\n\\t\\tnamespace: false,\\n\\t\\thandler: function( event ) {\\n\\t\\t\\tvar result,\\n\\t\\t\\t\\tsaved = dataPriv.get( this, type );\\n\\n\\t\\t\\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\\n\\n\\t\\t\\t\\t// Interrupt processing of the outer synthetic .trigger()ed event\\n\\t\\t\\t\\tif ( !saved ) {\\n\\n\\t\\t\\t\\t\\t// Store arguments for use when handling the inner native event\\n\\t\\t\\t\\t\\t// There will always be at least one argument (an event object), so this array\\n\\t\\t\\t\\t\\t// will not be confused with a leftover capture object.\\n\\t\\t\\t\\t\\tsaved = slice.call( arguments );\\n\\t\\t\\t\\t\\tdataPriv.set( this, type, saved );\\n\\n\\t\\t\\t\\t\\t// Trigger the native event and capture its result\\n\\t\\t\\t\\t\\tthis[ type ]();\\n\\t\\t\\t\\t\\tresult = dataPriv.get( this, type );\\n\\t\\t\\t\\t\\tdataPriv.set( this, type, false );\\n\\n\\t\\t\\t\\t\\tif ( saved !== result ) {\\n\\n\\t\\t\\t\\t\\t\\t// Cancel the outer synthetic event\\n\\t\\t\\t\\t\\t\\tevent.stopImmediatePropagation();\\n\\t\\t\\t\\t\\t\\tevent.preventDefault();\\n\\n\\t\\t\\t\\t\\t\\treturn result;\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// If this is an inner synthetic event for an event with a bubbling surrogate\\n\\t\\t\\t\\t// (focus or blur), assume that the surrogate already propagated from triggering\\n\\t\\t\\t\\t// the native event and prevent that from happening again here.\\n\\t\\t\\t\\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\\n\\t\\t\\t\\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\\n\\t\\t\\t\\t// less bad than duplication.\\n\\t\\t\\t\\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\\n\\t\\t\\t\\t\\tevent.stopPropagation();\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t// If this is a native event triggered above, everything is now in order\\n\\t\\t\\t// Fire an inner synthetic event with the original arguments\\n\\t\\t\\t} else if ( saved ) {\\n\\n\\t\\t\\t\\t// ...and capture the result\\n\\t\\t\\t\\tdataPriv.set( this, type, jQuery.event.trigger(\\n\\t\\t\\t\\t\\tsaved[ 0 ],\\n\\t\\t\\t\\t\\tsaved.slice( 1 ),\\n\\t\\t\\t\\t\\tthis\\n\\t\\t\\t\\t) );\\n\\n\\t\\t\\t\\t// Abort handling of the native event by all jQuery handlers while allowing\\n\\t\\t\\t\\t// native handlers on the same element to run. On target, this is achieved\\n\\t\\t\\t\\t// by stopping immediate propagation just on the jQuery event. However,\\n\\t\\t\\t\\t// the native event is re-wrapped by a jQuery one on each level of the\\n\\t\\t\\t\\t// propagation so the only way to stop it for jQuery is to stop it for\\n\\t\\t\\t\\t// everyone via native `stopPropagation()`. This is not a problem for\\n\\t\\t\\t\\t// focus/blur which don't bubble, but it does also stop click on checkboxes\\n\\t\\t\\t\\t// and radios. We accept this limitation.\\n\\t\\t\\t\\tevent.stopPropagation();\\n\\t\\t\\t\\tevent.isImmediatePropagationStopped = returnTrue;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t} );\\n}\\n\\njQuery.removeEvent = function( elem, type, handle ) {\\n\\n\\t// This \\\"if\\\" is needed for plain objects\\n\\tif ( elem.removeEventListener ) {\\n\\t\\telem.removeEventListener( type, handle );\\n\\t}\\n};\\n\\njQuery.Event = function( src, props ) {\\n\\n\\t// Allow instantiation without the 'new' keyword\\n\\tif ( !( this instanceof jQuery.Event ) ) {\\n\\t\\treturn new jQuery.Event( src, props );\\n\\t}\\n\\n\\t// Event object\\n\\tif ( src && src.type ) {\\n\\t\\tthis.originalEvent = src;\\n\\t\\tthis.type = src.type;\\n\\n\\t\\t// Events bubbling up the document may have been marked as prevented\\n\\t\\t// by a handler lower down the tree; reflect the correct value.\\n\\t\\tthis.isDefaultPrevented = src.defaultPrevented ||\\n\\t\\t\\t\\tsrc.defaultPrevented === undefined &&\\n\\n\\t\\t\\t\\t// Support: Android <=2.3 only\\n\\t\\t\\t\\tsrc.returnValue === false ?\\n\\t\\t\\treturnTrue :\\n\\t\\t\\treturnFalse;\\n\\n\\t\\t// Create target properties\\n\\t\\t// Support: Safari <=6 - 7 only\\n\\t\\t// Target should not be a text node (trac-504, trac-13143)\\n\\t\\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\\n\\t\\t\\tsrc.target.parentNode :\\n\\t\\t\\tsrc.target;\\n\\n\\t\\tthis.currentTarget = src.currentTarget;\\n\\t\\tthis.relatedTarget = src.relatedTarget;\\n\\n\\t// Event type\\n\\t} else {\\n\\t\\tthis.type = src;\\n\\t}\\n\\n\\t// Put explicitly provided properties onto the event object\\n\\tif ( props ) {\\n\\t\\tjQuery.extend( this, props );\\n\\t}\\n\\n\\t// Create a timestamp if incoming event doesn't have one\\n\\tthis.timeStamp = src && src.timeStamp || Date.now();\\n\\n\\t// Mark it as fixed\\n\\tthis[ jQuery.expando ] = true;\\n};\\n\\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\\njQuery.Event.prototype = {\\n\\tconstructor: jQuery.Event,\\n\\tisDefaultPrevented: returnFalse,\\n\\tisPropagationStopped: returnFalse,\\n\\tisImmediatePropagationStopped: returnFalse,\\n\\tisSimulated: false,\\n\\n\\tpreventDefault: function() {\\n\\t\\tvar e = this.originalEvent;\\n\\n\\t\\tthis.isDefaultPrevented = returnTrue;\\n\\n\\t\\tif ( e && !this.isSimulated ) {\\n\\t\\t\\te.preventDefault();\\n\\t\\t}\\n\\t},\\n\\tstopPropagation: function() {\\n\\t\\tvar e = this.originalEvent;\\n\\n\\t\\tthis.isPropagationStopped = returnTrue;\\n\\n\\t\\tif ( e && !this.isSimulated ) {\\n\\t\\t\\te.stopPropagation();\\n\\t\\t}\\n\\t},\\n\\tstopImmediatePropagation: function() {\\n\\t\\tvar e = this.originalEvent;\\n\\n\\t\\tthis.isImmediatePropagationStopped = returnTrue;\\n\\n\\t\\tif ( e && !this.isSimulated ) {\\n\\t\\t\\te.stopImmediatePropagation();\\n\\t\\t}\\n\\n\\t\\tthis.stopPropagation();\\n\\t}\\n};\\n\\n// Includes all common event props including KeyEvent and MouseEvent specific props\\njQuery.each( {\\n\\taltKey: true,\\n\\tbubbles: true,\\n\\tcancelable: true,\\n\\tchangedTouches: true,\\n\\tctrlKey: true,\\n\\tdetail: true,\\n\\teventPhase: true,\\n\\tmetaKey: true,\\n\\tpageX: true,\\n\\tpageY: true,\\n\\tshiftKey: true,\\n\\tview: true,\\n\\t\\\"char\\\": true,\\n\\tcode: true,\\n\\tcharCode: true,\\n\\tkey: true,\\n\\tkeyCode: true,\\n\\tbutton: true,\\n\\tbuttons: true,\\n\\tclientX: true,\\n\\tclientY: true,\\n\\toffsetX: true,\\n\\toffsetY: true,\\n\\tpointerId: true,\\n\\tpointerType: true,\\n\\tscreenX: true,\\n\\tscreenY: true,\\n\\ttargetTouches: true,\\n\\ttoElement: true,\\n\\ttouches: true,\\n\\twhich: true\\n}, jQuery.event.addProp );\\n\\njQuery.each( { focus: \\\"focusin\\\", blur: \\\"focusout\\\" }, function( type, delegateType ) {\\n\\n\\tfunction focusMappedHandler( nativeEvent ) {\\n\\t\\tif ( document.documentMode ) {\\n\\n\\t\\t\\t// Support: IE 11+\\n\\t\\t\\t// Attach a single focusin/focusout handler on the document while someone wants\\n\\t\\t\\t// focus/blur. This is because the former are synchronous in IE while the latter\\n\\t\\t\\t// are async. In other browsers, all those handlers are invoked synchronously.\\n\\n\\t\\t\\t// `handle` from private data would already wrap the event, but we need\\n\\t\\t\\t// to change the `type` here.\\n\\t\\t\\tvar handle = dataPriv.get( this, \\\"handle\\\" ),\\n\\t\\t\\t\\tevent = jQuery.event.fix( nativeEvent );\\n\\t\\t\\tevent.type = nativeEvent.type === \\\"focusin\\\" ? \\\"focus\\\" : \\\"blur\\\";\\n\\t\\t\\tevent.isSimulated = true;\\n\\n\\t\\t\\t// First, handle focusin/focusout\\n\\t\\t\\thandle( nativeEvent );\\n\\n\\t\\t\\t// ...then, handle focus/blur\\n\\t\\t\\t//\\n\\t\\t\\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\\n\\t\\t\\t// invoking the handler at the lower level.\\n\\t\\t\\tif ( event.target === event.currentTarget ) {\\n\\n\\t\\t\\t\\t// The setup part calls `leverageNative`, which, in turn, calls\\n\\t\\t\\t\\t// `jQuery.event.add`, so event handle will already have been set\\n\\t\\t\\t\\t// by this point.\\n\\t\\t\\t\\thandle( event );\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\n\\t\\t\\t// For non-IE browsers, attach a single capturing handler on the document\\n\\t\\t\\t// while someone wants focusin/focusout.\\n\\t\\t\\tjQuery.event.simulate( delegateType, nativeEvent.target,\\n\\t\\t\\t\\tjQuery.event.fix( nativeEvent ) );\\n\\t\\t}\\n\\t}\\n\\n\\tjQuery.event.special[ type ] = {\\n\\n\\t\\t// Utilize native event if possible so blur/focus sequence is correct\\n\\t\\tsetup: function() {\\n\\n\\t\\t\\tvar attaches;\\n\\n\\t\\t\\t// Claim the first handler\\n\\t\\t\\t// dataPriv.set( this, \\\"focus\\\", ... )\\n\\t\\t\\t// dataPriv.set( this, \\\"blur\\\", ... )\\n\\t\\t\\tleverageNative( this, type, true );\\n\\n\\t\\t\\tif ( document.documentMode ) {\\n\\n\\t\\t\\t\\t// Support: IE 9 - 11+\\n\\t\\t\\t\\t// We use the same native handler for focusin & focus (and focusout & blur)\\n\\t\\t\\t\\t// so we need to coordinate setup & teardown parts between those events.\\n\\t\\t\\t\\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\\n\\t\\t\\t\\tattaches = dataPriv.get( this, delegateType );\\n\\t\\t\\t\\tif ( !attaches ) {\\n\\t\\t\\t\\t\\tthis.addEventListener( delegateType, focusMappedHandler );\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// Return false to allow normal processing in the caller\\n\\t\\t\\t\\treturn false;\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\ttrigger: function() {\\n\\n\\t\\t\\t// Force setup before trigger\\n\\t\\t\\tleverageNative( this, type );\\n\\n\\t\\t\\t// Return non-false to allow normal event-path propagation\\n\\t\\t\\treturn true;\\n\\t\\t},\\n\\n\\t\\tteardown: function() {\\n\\t\\t\\tvar attaches;\\n\\n\\t\\t\\tif ( document.documentMode ) {\\n\\t\\t\\t\\tattaches = dataPriv.get( this, delegateType ) - 1;\\n\\t\\t\\t\\tif ( !attaches ) {\\n\\t\\t\\t\\t\\tthis.removeEventListener( delegateType, focusMappedHandler );\\n\\t\\t\\t\\t\\tdataPriv.remove( this, delegateType );\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tdataPriv.set( this, delegateType, attaches );\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// Return false to indicate standard teardown should be applied\\n\\t\\t\\t\\treturn false;\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\t// Suppress native focus or blur if we're currently inside\\n\\t\\t// a leveraged native-event stack\\n\\t\\t_default: function( event ) {\\n\\t\\t\\treturn dataPriv.get( event.target, type );\\n\\t\\t},\\n\\n\\t\\tdelegateType: delegateType\\n\\t};\\n\\n\\t// Support: Firefox <=44\\n\\t// Firefox doesn't have focus(in | out) events\\n\\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\\n\\t//\\n\\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\\n\\t// focus(in | out) events fire after focus & blur events,\\n\\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\\n\\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\\n\\t//\\n\\t// Support: IE 9 - 11+\\n\\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\\n\\t// attach a single handler for both events in IE.\\n\\tjQuery.event.special[ delegateType ] = {\\n\\t\\tsetup: function() {\\n\\n\\t\\t\\t// Handle: regular nodes (via `this.ownerDocument`), window\\n\\t\\t\\t// (via `this.document`) & document (via `this`).\\n\\t\\t\\tvar doc = this.ownerDocument || this.document || this,\\n\\t\\t\\t\\tdataHolder = document.documentMode ? this : doc,\\n\\t\\t\\t\\tattaches = dataPriv.get( dataHolder, delegateType );\\n\\n\\t\\t\\t// Support: IE 9 - 11+\\n\\t\\t\\t// We use the same native handler for focusin & focus (and focusout & blur)\\n\\t\\t\\t// so we need to coordinate setup & teardown parts between those events.\\n\\t\\t\\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\\n\\t\\t\\tif ( !attaches ) {\\n\\t\\t\\t\\tif ( document.documentMode ) {\\n\\t\\t\\t\\t\\tthis.addEventListener( delegateType, focusMappedHandler );\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tdoc.addEventListener( type, focusMappedHandler, true );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\\n\\t\\t},\\n\\t\\tteardown: function() {\\n\\t\\t\\tvar doc = this.ownerDocument || this.document || this,\\n\\t\\t\\t\\tdataHolder = document.documentMode ? this : doc,\\n\\t\\t\\t\\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\\n\\n\\t\\t\\tif ( !attaches ) {\\n\\t\\t\\t\\tif ( document.documentMode ) {\\n\\t\\t\\t\\t\\tthis.removeEventListener( delegateType, focusMappedHandler );\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tdoc.removeEventListener( type, focusMappedHandler, true );\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tdataPriv.remove( dataHolder, delegateType );\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tdataPriv.set( dataHolder, delegateType, attaches );\\n\\t\\t\\t}\\n\\t\\t}\\n\\t};\\n} );\\n\\n// Create mouseenter/leave events using mouseover/out and event-time checks\\n// so that event delegation works in jQuery.\\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\\n//\\n// Support: Safari 7 only\\n// Safari sends mouseenter too often; see:\\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\\n// for the description of the bug (it existed in older Chrome versions as well).\\njQuery.each( {\\n\\tmouseenter: \\\"mouseover\\\",\\n\\tmouseleave: \\\"mouseout\\\",\\n\\tpointerenter: \\\"pointerover\\\",\\n\\tpointerleave: \\\"pointerout\\\"\\n}, function( orig, fix ) {\\n\\tjQuery.event.special[ orig ] = {\\n\\t\\tdelegateType: fix,\\n\\t\\tbindType: fix,\\n\\n\\t\\thandle: function( event ) {\\n\\t\\t\\tvar ret,\\n\\t\\t\\t\\ttarget = this,\\n\\t\\t\\t\\trelated = event.relatedTarget,\\n\\t\\t\\t\\thandleObj = event.handleObj;\\n\\n\\t\\t\\t// For mouseenter/leave call the handler if related is outside the target.\\n\\t\\t\\t// NB: No relatedTarget if the mouse left/entered the browser window\\n\\t\\t\\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\\n\\t\\t\\t\\tevent.type = handleObj.origType;\\n\\t\\t\\t\\tret = handleObj.handler.apply( this, arguments );\\n\\t\\t\\t\\tevent.type = fix;\\n\\t\\t\\t}\\n\\t\\t\\treturn ret;\\n\\t\\t}\\n\\t};\\n} );\\n\\njQuery.fn.extend( {\\n\\n\\ton: function( types, selector, data, fn ) {\\n\\t\\treturn on( this, types, selector, data, fn );\\n\\t},\\n\\tone: function( types, selector, data, fn ) {\\n\\t\\treturn on( this, types, selector, data, fn, 1 );\\n\\t},\\n\\toff: function( types, selector, fn ) {\\n\\t\\tvar handleObj, type;\\n\\t\\tif ( types && types.preventDefault && types.handleObj ) {\\n\\n\\t\\t\\t// ( event ) dispatched jQuery.Event\\n\\t\\t\\thandleObj = types.handleObj;\\n\\t\\t\\tjQuery( types.delegateTarget ).off(\\n\\t\\t\\t\\thandleObj.namespace ?\\n\\t\\t\\t\\t\\thandleObj.origType + \\\".\\\" + handleObj.namespace :\\n\\t\\t\\t\\t\\thandleObj.origType,\\n\\t\\t\\t\\thandleObj.selector,\\n\\t\\t\\t\\thandleObj.handler\\n\\t\\t\\t);\\n\\t\\t\\treturn this;\\n\\t\\t}\\n\\t\\tif ( typeof types === \\\"object\\\" ) {\\n\\n\\t\\t\\t// ( types-object [, selector] )\\n\\t\\t\\tfor ( type in types ) {\\n\\t\\t\\t\\tthis.off( type, selector, types[ type ] );\\n\\t\\t\\t}\\n\\t\\t\\treturn this;\\n\\t\\t}\\n\\t\\tif ( selector === false || typeof selector === \\\"function\\\" ) {\\n\\n\\t\\t\\t// ( types [, fn] )\\n\\t\\t\\tfn = selector;\\n\\t\\t\\tselector = undefined;\\n\\t\\t}\\n\\t\\tif ( fn === false ) {\\n\\t\\t\\tfn = returnFalse;\\n\\t\\t}\\n\\t\\treturn this.each( function() {\\n\\t\\t\\tjQuery.event.remove( this, types, fn, selector );\\n\\t\\t} );\\n\\t}\\n} );\\n\\n\\nvar\\n\\n\\t// Support: IE <=10 - 11, Edge 12 - 13 only\\n\\t// In IE/Edge using regex groups here causes severe slowdowns.\\n\\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\\n\\trnoInnerhtml = /\\\\s*$/g;\\n\\n// Prefer a tbody over its parent table for containing new rows\\nfunction manipulationTarget( elem, content ) {\\n\\tif ( nodeName( elem, \\\"table\\\" ) &&\\n\\t\\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \\\"tr\\\" ) ) {\\n\\n\\t\\treturn jQuery( elem ).children( \\\"tbody\\\" )[ 0 ] || elem;\\n\\t}\\n\\n\\treturn elem;\\n}\\n\\n// Replace/restore the type attribute of script elements for safe DOM manipulation\\nfunction disableScript( elem ) {\\n\\telem.type = ( elem.getAttribute( \\\"type\\\" ) !== null ) + \\\"/\\\" + elem.type;\\n\\treturn elem;\\n}\\nfunction restoreScript( elem ) {\\n\\tif ( ( elem.type || \\\"\\\" ).slice( 0, 5 ) === \\\"true/\\\" ) {\\n\\t\\telem.type = elem.type.slice( 5 );\\n\\t} else {\\n\\t\\telem.removeAttribute( \\\"type\\\" );\\n\\t}\\n\\n\\treturn elem;\\n}\\n\\nfunction cloneCopyEvent( src, dest ) {\\n\\tvar i, l, type, pdataOld, udataOld, udataCur, events;\\n\\n\\tif ( dest.nodeType !== 1 ) {\\n\\t\\treturn;\\n\\t}\\n\\n\\t// 1. Copy private data: events, handlers, etc.\\n\\tif ( dataPriv.hasData( src ) ) {\\n\\t\\tpdataOld = dataPriv.get( src );\\n\\t\\tevents = pdataOld.events;\\n\\n\\t\\tif ( events ) {\\n\\t\\t\\tdataPriv.remove( dest, \\\"handle events\\\" );\\n\\n\\t\\t\\tfor ( type in events ) {\\n\\t\\t\\t\\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\\n\\t\\t\\t\\t\\tjQuery.event.add( dest, type, events[ type ][ i ] );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// 2. Copy user data\\n\\tif ( dataUser.hasData( src ) ) {\\n\\t\\tudataOld = dataUser.access( src );\\n\\t\\tudataCur = jQuery.extend( {}, udataOld );\\n\\n\\t\\tdataUser.set( dest, udataCur );\\n\\t}\\n}\\n\\n// Fix IE bugs, see support tests\\nfunction fixInput( src, dest ) {\\n\\tvar nodeName = dest.nodeName.toLowerCase();\\n\\n\\t// Fails to persist the checked state of a cloned checkbox or radio button.\\n\\tif ( nodeName === \\\"input\\\" && rcheckableType.test( src.type ) ) {\\n\\t\\tdest.checked = src.checked;\\n\\n\\t// Fails to return the selected option to the default selected state when cloning options\\n\\t} else if ( nodeName === \\\"input\\\" || nodeName === \\\"textarea\\\" ) {\\n\\t\\tdest.defaultValue = src.defaultValue;\\n\\t}\\n}\\n\\nfunction domManip( collection, args, callback, ignored ) {\\n\\n\\t// Flatten any nested arrays\\n\\targs = flat( args );\\n\\n\\tvar fragment, first, scripts, hasScripts, node, doc,\\n\\t\\ti = 0,\\n\\t\\tl = collection.length,\\n\\t\\tiNoClone = l - 1,\\n\\t\\tvalue = args[ 0 ],\\n\\t\\tvalueIsFunction = isFunction( value );\\n\\n\\t// We can't cloneNode fragments that contain checked, in WebKit\\n\\tif ( valueIsFunction ||\\n\\t\\t\\t( l > 1 && typeof value === \\\"string\\\" &&\\n\\t\\t\\t\\t!support.checkClone && rchecked.test( value ) ) ) {\\n\\t\\treturn collection.each( function( index ) {\\n\\t\\t\\tvar self = collection.eq( index );\\n\\t\\t\\tif ( valueIsFunction ) {\\n\\t\\t\\t\\targs[ 0 ] = value.call( this, index, self.html() );\\n\\t\\t\\t}\\n\\t\\t\\tdomManip( self, args, callback, ignored );\\n\\t\\t} );\\n\\t}\\n\\n\\tif ( l ) {\\n\\t\\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\\n\\t\\tfirst = fragment.firstChild;\\n\\n\\t\\tif ( fragment.childNodes.length === 1 ) {\\n\\t\\t\\tfragment = first;\\n\\t\\t}\\n\\n\\t\\t// Require either new content or an interest in ignored elements to invoke the callback\\n\\t\\tif ( first || ignored ) {\\n\\t\\t\\tscripts = jQuery.map( getAll( fragment, \\\"script\\\" ), disableScript );\\n\\t\\t\\thasScripts = scripts.length;\\n\\n\\t\\t\\t// Use the original fragment for the last item\\n\\t\\t\\t// instead of the first because it can end up\\n\\t\\t\\t// being emptied incorrectly in certain situations (trac-8070).\\n\\t\\t\\tfor ( ; i < l; i++ ) {\\n\\t\\t\\t\\tnode = fragment;\\n\\n\\t\\t\\t\\tif ( i !== iNoClone ) {\\n\\t\\t\\t\\t\\tnode = jQuery.clone( node, true, true );\\n\\n\\t\\t\\t\\t\\t// Keep references to cloned scripts for later restoration\\n\\t\\t\\t\\t\\tif ( hasScripts ) {\\n\\n\\t\\t\\t\\t\\t\\t// Support: Android <=4.0 only, PhantomJS 1 only\\n\\t\\t\\t\\t\\t\\t// push.apply(_, arraylike) throws on ancient WebKit\\n\\t\\t\\t\\t\\t\\tjQuery.merge( scripts, getAll( node, \\\"script\\\" ) );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tcallback.call( collection[ i ], node, i );\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( hasScripts ) {\\n\\t\\t\\t\\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\\n\\n\\t\\t\\t\\t// Reenable scripts\\n\\t\\t\\t\\tjQuery.map( scripts, restoreScript );\\n\\n\\t\\t\\t\\t// Evaluate executable scripts on first document insertion\\n\\t\\t\\t\\tfor ( i = 0; i < hasScripts; i++ ) {\\n\\t\\t\\t\\t\\tnode = scripts[ i ];\\n\\t\\t\\t\\t\\tif ( rscriptType.test( node.type || \\\"\\\" ) &&\\n\\t\\t\\t\\t\\t\\t!dataPriv.access( node, \\\"globalEval\\\" ) &&\\n\\t\\t\\t\\t\\t\\tjQuery.contains( doc, node ) ) {\\n\\n\\t\\t\\t\\t\\t\\tif ( node.src && ( node.type || \\\"\\\" ).toLowerCase() !== \\\"module\\\" ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Optional AJAX dependency, but won't run scripts if not present\\n\\t\\t\\t\\t\\t\\t\\tif ( jQuery._evalUrl && !node.noModule ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tjQuery._evalUrl( node.src, {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tnonce: node.nonce || node.getAttribute( \\\"nonce\\\" )\\n\\t\\t\\t\\t\\t\\t\\t\\t}, doc );\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Unwrap a CDATA section containing script contents. This shouldn't be\\n\\t\\t\\t\\t\\t\\t\\t// needed as in XML documents they're already not visible when\\n\\t\\t\\t\\t\\t\\t\\t// inspecting element contents and in HTML documents they have no\\n\\t\\t\\t\\t\\t\\t\\t// meaning but we're preserving that logic for backwards compatibility.\\n\\t\\t\\t\\t\\t\\t\\t// This will be removed completely in 4.0. See gh-4904.\\n\\t\\t\\t\\t\\t\\t\\tDOMEval( node.textContent.replace( rcleanScript, \\\"\\\" ), node, doc );\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\treturn collection;\\n}\\n\\nfunction remove( elem, selector, keepData ) {\\n\\tvar node,\\n\\t\\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\\n\\t\\ti = 0;\\n\\n\\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\\n\\t\\tif ( !keepData && node.nodeType === 1 ) {\\n\\t\\t\\tjQuery.cleanData( getAll( node ) );\\n\\t\\t}\\n\\n\\t\\tif ( node.parentNode ) {\\n\\t\\t\\tif ( keepData && isAttached( node ) ) {\\n\\t\\t\\t\\tsetGlobalEval( getAll( node, \\\"script\\\" ) );\\n\\t\\t\\t}\\n\\t\\t\\tnode.parentNode.removeChild( node );\\n\\t\\t}\\n\\t}\\n\\n\\treturn elem;\\n}\\n\\njQuery.extend( {\\n\\thtmlPrefilter: function( html ) {\\n\\t\\treturn html;\\n\\t},\\n\\n\\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\\n\\t\\tvar i, l, srcElements, destElements,\\n\\t\\t\\tclone = elem.cloneNode( true ),\\n\\t\\t\\tinPage = isAttached( elem );\\n\\n\\t\\t// Fix IE cloning issues\\n\\t\\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\\n\\t\\t\\t\\t!jQuery.isXMLDoc( elem ) ) {\\n\\n\\t\\t\\t// We eschew jQuery#find here for performance reasons:\\n\\t\\t\\t// https://jsperf.com/getall-vs-sizzle/2\\n\\t\\t\\tdestElements = getAll( clone );\\n\\t\\t\\tsrcElements = getAll( elem );\\n\\n\\t\\t\\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\\n\\t\\t\\t\\tfixInput( srcElements[ i ], destElements[ i ] );\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Copy the events from the original to the clone\\n\\t\\tif ( dataAndEvents ) {\\n\\t\\t\\tif ( deepDataAndEvents ) {\\n\\t\\t\\t\\tsrcElements = srcElements || getAll( elem );\\n\\t\\t\\t\\tdestElements = destElements || getAll( clone );\\n\\n\\t\\t\\t\\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\\n\\t\\t\\t\\t\\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tcloneCopyEvent( elem, clone );\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Preserve script evaluation history\\n\\t\\tdestElements = getAll( clone, \\\"script\\\" );\\n\\t\\tif ( destElements.length > 0 ) {\\n\\t\\t\\tsetGlobalEval( destElements, !inPage && getAll( elem, \\\"script\\\" ) );\\n\\t\\t}\\n\\n\\t\\t// Return the cloned set\\n\\t\\treturn clone;\\n\\t},\\n\\n\\tcleanData: function( elems ) {\\n\\t\\tvar data, elem, type,\\n\\t\\t\\tspecial = jQuery.event.special,\\n\\t\\t\\ti = 0;\\n\\n\\t\\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\\n\\t\\t\\tif ( acceptData( elem ) ) {\\n\\t\\t\\t\\tif ( ( data = elem[ dataPriv.expando ] ) ) {\\n\\t\\t\\t\\t\\tif ( data.events ) {\\n\\t\\t\\t\\t\\t\\tfor ( type in data.events ) {\\n\\t\\t\\t\\t\\t\\t\\tif ( special[ type ] ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tjQuery.event.remove( elem, type );\\n\\n\\t\\t\\t\\t\\t\\t\\t// This is a shortcut to avoid jQuery.event.remove's overhead\\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\t\\tjQuery.removeEvent( elem, type, data.handle );\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Support: Chrome <=35 - 45+\\n\\t\\t\\t\\t\\t// Assign undefined instead of using delete, see Data#remove\\n\\t\\t\\t\\t\\telem[ dataPriv.expando ] = undefined;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ( elem[ dataUser.expando ] ) {\\n\\n\\t\\t\\t\\t\\t// Support: Chrome <=35 - 45+\\n\\t\\t\\t\\t\\t// Assign undefined instead of using delete, see Data#remove\\n\\t\\t\\t\\t\\telem[ dataUser.expando ] = undefined;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n} );\\n\\njQuery.fn.extend( {\\n\\tdetach: function( selector ) {\\n\\t\\treturn remove( this, selector, true );\\n\\t},\\n\\n\\tremove: function( selector ) {\\n\\t\\treturn remove( this, selector );\\n\\t},\\n\\n\\ttext: function( value ) {\\n\\t\\treturn access( this, function( value ) {\\n\\t\\t\\treturn value === undefined ?\\n\\t\\t\\t\\tjQuery.text( this ) :\\n\\t\\t\\t\\tthis.empty().each( function() {\\n\\t\\t\\t\\t\\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\\n\\t\\t\\t\\t\\t\\tthis.textContent = value;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t} );\\n\\t\\t}, null, value, arguments.length );\\n\\t},\\n\\n\\tappend: function() {\\n\\t\\treturn domManip( this, arguments, function( elem ) {\\n\\t\\t\\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\\n\\t\\t\\t\\tvar target = manipulationTarget( this, elem );\\n\\t\\t\\t\\ttarget.appendChild( elem );\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t},\\n\\n\\tprepend: function() {\\n\\t\\treturn domManip( this, arguments, function( elem ) {\\n\\t\\t\\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\\n\\t\\t\\t\\tvar target = manipulationTarget( this, elem );\\n\\t\\t\\t\\ttarget.insertBefore( elem, target.firstChild );\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t},\\n\\n\\tbefore: function() {\\n\\t\\treturn domManip( this, arguments, function( elem ) {\\n\\t\\t\\tif ( this.parentNode ) {\\n\\t\\t\\t\\tthis.parentNode.insertBefore( elem, this );\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t},\\n\\n\\tafter: function() {\\n\\t\\treturn domManip( this, arguments, function( elem ) {\\n\\t\\t\\tif ( this.parentNode ) {\\n\\t\\t\\t\\tthis.parentNode.insertBefore( elem, this.nextSibling );\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t},\\n\\n\\tempty: function() {\\n\\t\\tvar elem,\\n\\t\\t\\ti = 0;\\n\\n\\t\\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\\n\\t\\t\\tif ( elem.nodeType === 1 ) {\\n\\n\\t\\t\\t\\t// Prevent memory leaks\\n\\t\\t\\t\\tjQuery.cleanData( getAll( elem, false ) );\\n\\n\\t\\t\\t\\t// Remove any remaining nodes\\n\\t\\t\\t\\telem.textContent = \\\"\\\";\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn this;\\n\\t},\\n\\n\\tclone: function( dataAndEvents, deepDataAndEvents ) {\\n\\t\\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\\n\\t\\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\\n\\n\\t\\treturn this.map( function() {\\n\\t\\t\\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\\n\\t\\t} );\\n\\t},\\n\\n\\thtml: function( value ) {\\n\\t\\treturn access( this, function( value ) {\\n\\t\\t\\tvar elem = this[ 0 ] || {},\\n\\t\\t\\t\\ti = 0,\\n\\t\\t\\t\\tl = this.length;\\n\\n\\t\\t\\tif ( value === undefined && elem.nodeType === 1 ) {\\n\\t\\t\\t\\treturn elem.innerHTML;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// See if we can take a shortcut and just use innerHTML\\n\\t\\t\\tif ( typeof value === \\\"string\\\" && !rnoInnerhtml.test( value ) &&\\n\\t\\t\\t\\t!wrapMap[ ( rtagName.exec( value ) || [ \\\"\\\", \\\"\\\" ] )[ 1 ].toLowerCase() ] ) {\\n\\n\\t\\t\\t\\tvalue = jQuery.htmlPrefilter( value );\\n\\n\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\tfor ( ; i < l; i++ ) {\\n\\t\\t\\t\\t\\t\\telem = this[ i ] || {};\\n\\n\\t\\t\\t\\t\\t\\t// Remove element nodes and prevent memory leaks\\n\\t\\t\\t\\t\\t\\tif ( elem.nodeType === 1 ) {\\n\\t\\t\\t\\t\\t\\t\\tjQuery.cleanData( getAll( elem, false ) );\\n\\t\\t\\t\\t\\t\\t\\telem.innerHTML = value;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\telem = 0;\\n\\n\\t\\t\\t\\t// If using innerHTML throws an exception, use the fallback method\\n\\t\\t\\t\\t} catch ( e ) {}\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( elem ) {\\n\\t\\t\\t\\tthis.empty().append( value );\\n\\t\\t\\t}\\n\\t\\t}, null, value, arguments.length );\\n\\t},\\n\\n\\treplaceWith: function() {\\n\\t\\tvar ignored = [];\\n\\n\\t\\t// Make the changes, replacing each non-ignored context element with the new content\\n\\t\\treturn domManip( this, arguments, function( elem ) {\\n\\t\\t\\tvar parent = this.parentNode;\\n\\n\\t\\t\\tif ( jQuery.inArray( this, ignored ) < 0 ) {\\n\\t\\t\\t\\tjQuery.cleanData( getAll( this ) );\\n\\t\\t\\t\\tif ( parent ) {\\n\\t\\t\\t\\t\\tparent.replaceChild( elem, this );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t// Force callback invocation\\n\\t\\t}, ignored );\\n\\t}\\n} );\\n\\njQuery.each( {\\n\\tappendTo: \\\"append\\\",\\n\\tprependTo: \\\"prepend\\\",\\n\\tinsertBefore: \\\"before\\\",\\n\\tinsertAfter: \\\"after\\\",\\n\\treplaceAll: \\\"replaceWith\\\"\\n}, function( name, original ) {\\n\\tjQuery.fn[ name ] = function( selector ) {\\n\\t\\tvar elems,\\n\\t\\t\\tret = [],\\n\\t\\t\\tinsert = jQuery( selector ),\\n\\t\\t\\tlast = insert.length - 1,\\n\\t\\t\\ti = 0;\\n\\n\\t\\tfor ( ; i <= last; i++ ) {\\n\\t\\t\\telems = i === last ? this : this.clone( true );\\n\\t\\t\\tjQuery( insert[ i ] )[ original ]( elems );\\n\\n\\t\\t\\t// Support: Android <=4.0 only, PhantomJS 1 only\\n\\t\\t\\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\\n\\t\\t\\tpush.apply( ret, elems.get() );\\n\\t\\t}\\n\\n\\t\\treturn this.pushStack( ret );\\n\\t};\\n} );\\nvar rnumnonpx = new RegExp( \\\"^(\\\" + pnum + \\\")(?!px)[a-z%]+$\\\", \\\"i\\\" );\\n\\nvar rcustomProp = /^--/;\\n\\n\\nvar getStyles = function( elem ) {\\n\\n\\t\\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\\n\\t\\t// IE throws on elements created in popups\\n\\t\\t// FF meanwhile throws on frame elements through \\\"defaultView.getComputedStyle\\\"\\n\\t\\tvar view = elem.ownerDocument.defaultView;\\n\\n\\t\\tif ( !view || !view.opener ) {\\n\\t\\t\\tview = window;\\n\\t\\t}\\n\\n\\t\\treturn view.getComputedStyle( elem );\\n\\t};\\n\\nvar swap = function( elem, options, callback ) {\\n\\tvar ret, name,\\n\\t\\told = {};\\n\\n\\t// Remember the old values, and insert the new ones\\n\\tfor ( name in options ) {\\n\\t\\told[ name ] = elem.style[ name ];\\n\\t\\telem.style[ name ] = options[ name ];\\n\\t}\\n\\n\\tret = callback.call( elem );\\n\\n\\t// Revert the old values\\n\\tfor ( name in options ) {\\n\\t\\telem.style[ name ] = old[ name ];\\n\\t}\\n\\n\\treturn ret;\\n};\\n\\n\\nvar rboxStyle = new RegExp( cssExpand.join( \\\"|\\\" ), \\\"i\\\" );\\n\\n\\n\\n( function() {\\n\\n\\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\\n\\t// so they're executed at the same time to save the second computation.\\n\\tfunction computeStyleTests() {\\n\\n\\t\\t// This is a singleton, we need to execute it only once\\n\\t\\tif ( !div ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\tcontainer.style.cssText = \\\"position:absolute;left:-11111px;width:60px;\\\" +\\n\\t\\t\\t\\\"margin-top:1px;padding:0;border:0\\\";\\n\\t\\tdiv.style.cssText =\\n\\t\\t\\t\\\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\\\" +\\n\\t\\t\\t\\\"margin:auto;border:1px;padding:1px;\\\" +\\n\\t\\t\\t\\\"width:60%;top:1%\\\";\\n\\t\\tdocumentElement.appendChild( container ).appendChild( div );\\n\\n\\t\\tvar divStyle = window.getComputedStyle( div );\\n\\t\\tpixelPositionVal = divStyle.top !== \\\"1%\\\";\\n\\n\\t\\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\\n\\t\\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\\n\\n\\t\\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\\n\\t\\t// Some styles come back with percentage values, even though they shouldn't\\n\\t\\tdiv.style.right = \\\"60%\\\";\\n\\t\\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\\n\\n\\t\\t// Support: IE 9 - 11 only\\n\\t\\t// Detect misreporting of content dimensions for box-sizing:border-box elements\\n\\t\\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\\n\\n\\t\\t// Support: IE 9 only\\n\\t\\t// Detect overflow:scroll screwiness (gh-3699)\\n\\t\\t// Support: Chrome <=64\\n\\t\\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\\n\\t\\tdiv.style.position = \\\"absolute\\\";\\n\\t\\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\\n\\n\\t\\tdocumentElement.removeChild( container );\\n\\n\\t\\t// Nullify the div so it wouldn't be stored in the memory and\\n\\t\\t// it will also be a sign that checks already performed\\n\\t\\tdiv = null;\\n\\t}\\n\\n\\tfunction roundPixelMeasures( measure ) {\\n\\t\\treturn Math.round( parseFloat( measure ) );\\n\\t}\\n\\n\\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\\n\\t\\treliableTrDimensionsVal, reliableMarginLeftVal,\\n\\t\\tcontainer = document.createElement( \\\"div\\\" ),\\n\\t\\tdiv = document.createElement( \\\"div\\\" );\\n\\n\\t// Finish early in limited (non-browser) environments\\n\\tif ( !div.style ) {\\n\\t\\treturn;\\n\\t}\\n\\n\\t// Support: IE <=9 - 11 only\\n\\t// Style of cloned element affects source element cloned (trac-8908)\\n\\tdiv.style.backgroundClip = \\\"content-box\\\";\\n\\tdiv.cloneNode( true ).style.backgroundClip = \\\"\\\";\\n\\tsupport.clearCloneStyle = div.style.backgroundClip === \\\"content-box\\\";\\n\\n\\tjQuery.extend( support, {\\n\\t\\tboxSizingReliable: function() {\\n\\t\\t\\tcomputeStyleTests();\\n\\t\\t\\treturn boxSizingReliableVal;\\n\\t\\t},\\n\\t\\tpixelBoxStyles: function() {\\n\\t\\t\\tcomputeStyleTests();\\n\\t\\t\\treturn pixelBoxStylesVal;\\n\\t\\t},\\n\\t\\tpixelPosition: function() {\\n\\t\\t\\tcomputeStyleTests();\\n\\t\\t\\treturn pixelPositionVal;\\n\\t\\t},\\n\\t\\treliableMarginLeft: function() {\\n\\t\\t\\tcomputeStyleTests();\\n\\t\\t\\treturn reliableMarginLeftVal;\\n\\t\\t},\\n\\t\\tscrollboxSize: function() {\\n\\t\\t\\tcomputeStyleTests();\\n\\t\\t\\treturn scrollboxSizeVal;\\n\\t\\t},\\n\\n\\t\\t// Support: IE 9 - 11+, Edge 15 - 18+\\n\\t\\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\\n\\t\\t// set in CSS while `offset*` properties report correct values.\\n\\t\\t// Behavior in IE 9 is more subtle than in newer versions & it passes\\n\\t\\t// some versions of this test; make sure not to make it pass there!\\n\\t\\t//\\n\\t\\t// Support: Firefox 70+\\n\\t\\t// Only Firefox includes border widths\\n\\t\\t// in computed dimensions. (gh-4529)\\n\\t\\treliableTrDimensions: function() {\\n\\t\\t\\tvar table, tr, trChild, trStyle;\\n\\t\\t\\tif ( reliableTrDimensionsVal == null ) {\\n\\t\\t\\t\\ttable = document.createElement( \\\"table\\\" );\\n\\t\\t\\t\\ttr = document.createElement( \\\"tr\\\" );\\n\\t\\t\\t\\ttrChild = document.createElement( \\\"div\\\" );\\n\\n\\t\\t\\t\\ttable.style.cssText = \\\"position:absolute;left:-11111px;border-collapse:separate\\\";\\n\\t\\t\\t\\ttr.style.cssText = \\\"border:1px solid\\\";\\n\\n\\t\\t\\t\\t// Support: Chrome 86+\\n\\t\\t\\t\\t// Height set through cssText does not get applied.\\n\\t\\t\\t\\t// Computed height then comes back as 0.\\n\\t\\t\\t\\ttr.style.height = \\\"1px\\\";\\n\\t\\t\\t\\ttrChild.style.height = \\\"9px\\\";\\n\\n\\t\\t\\t\\t// Support: Android 8 Chrome 86+\\n\\t\\t\\t\\t// In our bodyBackground.html iframe,\\n\\t\\t\\t\\t// display for all div elements is set to \\\"inline\\\",\\n\\t\\t\\t\\t// which causes a problem only in Android 8 Chrome 86.\\n\\t\\t\\t\\t// Ensuring the div is display: block\\n\\t\\t\\t\\t// gets around this issue.\\n\\t\\t\\t\\ttrChild.style.display = \\\"block\\\";\\n\\n\\t\\t\\t\\tdocumentElement\\n\\t\\t\\t\\t\\t.appendChild( table )\\n\\t\\t\\t\\t\\t.appendChild( tr )\\n\\t\\t\\t\\t\\t.appendChild( trChild );\\n\\n\\t\\t\\t\\ttrStyle = window.getComputedStyle( tr );\\n\\t\\t\\t\\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\\n\\t\\t\\t\\t\\tparseInt( trStyle.borderTopWidth, 10 ) +\\n\\t\\t\\t\\t\\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\\n\\n\\t\\t\\t\\tdocumentElement.removeChild( table );\\n\\t\\t\\t}\\n\\t\\t\\treturn reliableTrDimensionsVal;\\n\\t\\t}\\n\\t} );\\n} )();\\n\\n\\nfunction curCSS( elem, name, computed ) {\\n\\tvar width, minWidth, maxWidth, ret,\\n\\t\\tisCustomProp = rcustomProp.test( name ),\\n\\n\\t\\t// Support: Firefox 51+\\n\\t\\t// Retrieving style before computed somehow\\n\\t\\t// fixes an issue with getting wrong values\\n\\t\\t// on detached elements\\n\\t\\tstyle = elem.style;\\n\\n\\tcomputed = computed || getStyles( elem );\\n\\n\\t// getPropertyValue is needed for:\\n\\t// .css('filter') (IE 9 only, trac-12537)\\n\\t// .css('--customProperty) (gh-3144)\\n\\tif ( computed ) {\\n\\n\\t\\t// Support: IE <=9 - 11+\\n\\t\\t// IE only supports `\\\"float\\\"` in `getPropertyValue`; in computed styles\\n\\t\\t// it's only available as `\\\"cssFloat\\\"`. We no longer modify properties\\n\\t\\t// sent to `.css()` apart from camelCasing, so we need to check both.\\n\\t\\t// Normally, this would create difference in behavior: if\\n\\t\\t// `getPropertyValue` returns an empty string, the value returned\\n\\t\\t// by `.css()` would be `undefined`. This is usually the case for\\n\\t\\t// disconnected elements. However, in IE even disconnected elements\\n\\t\\t// with no styles return `\\\"none\\\"` for `getPropertyValue( \\\"float\\\" )`\\n\\t\\tret = computed.getPropertyValue( name ) || computed[ name ];\\n\\n\\t\\tif ( isCustomProp && ret ) {\\n\\n\\t\\t\\t// Support: Firefox 105+, Chrome <=105+\\n\\t\\t\\t// Spec requires trimming whitespace for custom properties (gh-4926).\\n\\t\\t\\t// Firefox only trims leading whitespace. Chrome just collapses\\n\\t\\t\\t// both leading & trailing whitespace to a single space.\\n\\t\\t\\t//\\n\\t\\t\\t// Fall back to `undefined` if empty string returned.\\n\\t\\t\\t// This collapses a missing definition with property defined\\n\\t\\t\\t// and set to an empty string but there's no standard API\\n\\t\\t\\t// allowing us to differentiate them without a performance penalty\\n\\t\\t\\t// and returning `undefined` aligns with older jQuery.\\n\\t\\t\\t//\\n\\t\\t\\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\\n\\t\\t\\t// as whitespace while CSS does not, but this is not a problem\\n\\t\\t\\t// because CSS preprocessing replaces them with U+000A LINE FEED\\n\\t\\t\\t// (which *is* CSS whitespace)\\n\\t\\t\\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\\n\\t\\t\\tret = ret.replace( rtrimCSS, \\\"$1\\\" ) || undefined;\\n\\t\\t}\\n\\n\\t\\tif ( ret === \\\"\\\" && !isAttached( elem ) ) {\\n\\t\\t\\tret = jQuery.style( elem, name );\\n\\t\\t}\\n\\n\\t\\t// A tribute to the \\\"awesome hack by Dean Edwards\\\"\\n\\t\\t// Android Browser returns percentage for some values,\\n\\t\\t// but width seems to be reliably pixels.\\n\\t\\t// This is against the CSSOM draft spec:\\n\\t\\t// https://drafts.csswg.org/cssom/#resolved-values\\n\\t\\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\\n\\n\\t\\t\\t// Remember the original values\\n\\t\\t\\twidth = style.width;\\n\\t\\t\\tminWidth = style.minWidth;\\n\\t\\t\\tmaxWidth = style.maxWidth;\\n\\n\\t\\t\\t// Put in the new values to get a computed value out\\n\\t\\t\\tstyle.minWidth = style.maxWidth = style.width = ret;\\n\\t\\t\\tret = computed.width;\\n\\n\\t\\t\\t// Revert the changed values\\n\\t\\t\\tstyle.width = width;\\n\\t\\t\\tstyle.minWidth = minWidth;\\n\\t\\t\\tstyle.maxWidth = maxWidth;\\n\\t\\t}\\n\\t}\\n\\n\\treturn ret !== undefined ?\\n\\n\\t\\t// Support: IE <=9 - 11 only\\n\\t\\t// IE returns zIndex value as an integer.\\n\\t\\tret + \\\"\\\" :\\n\\t\\tret;\\n}\\n\\n\\nfunction addGetHookIf( conditionFn, hookFn ) {\\n\\n\\t// Define the hook, we'll check on the first run if it's really needed.\\n\\treturn {\\n\\t\\tget: function() {\\n\\t\\t\\tif ( conditionFn() ) {\\n\\n\\t\\t\\t\\t// Hook not needed (or it's not possible to use it due\\n\\t\\t\\t\\t// to missing dependency), remove it.\\n\\t\\t\\t\\tdelete this.get;\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Hook needed; redefine it so that the support test is not executed again.\\n\\t\\t\\treturn ( this.get = hookFn ).apply( this, arguments );\\n\\t\\t}\\n\\t};\\n}\\n\\n\\nvar cssPrefixes = [ \\\"Webkit\\\", \\\"Moz\\\", \\\"ms\\\" ],\\n\\temptyStyle = document.createElement( \\\"div\\\" ).style,\\n\\tvendorProps = {};\\n\\n// Return a vendor-prefixed property or undefined\\nfunction vendorPropName( name ) {\\n\\n\\t// Check for vendor prefixed names\\n\\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\\n\\t\\ti = cssPrefixes.length;\\n\\n\\twhile ( i-- ) {\\n\\t\\tname = cssPrefixes[ i ] + capName;\\n\\t\\tif ( name in emptyStyle ) {\\n\\t\\t\\treturn name;\\n\\t\\t}\\n\\t}\\n}\\n\\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\\nfunction finalPropName( name ) {\\n\\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\\n\\n\\tif ( final ) {\\n\\t\\treturn final;\\n\\t}\\n\\tif ( name in emptyStyle ) {\\n\\t\\treturn name;\\n\\t}\\n\\treturn vendorProps[ name ] = vendorPropName( name ) || name;\\n}\\n\\n\\nvar\\n\\n\\t// Swappable if display is none or starts with table\\n\\t// except \\\"table\\\", \\\"table-cell\\\", or \\\"table-caption\\\"\\n\\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\\n\\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\\n\\tcssShow = { position: \\\"absolute\\\", visibility: \\\"hidden\\\", display: \\\"block\\\" },\\n\\tcssNormalTransform = {\\n\\t\\tletterSpacing: \\\"0\\\",\\n\\t\\tfontWeight: \\\"400\\\"\\n\\t};\\n\\nfunction setPositiveNumber( _elem, value, subtract ) {\\n\\n\\t// Any relative (+/-) values have already been\\n\\t// normalized at this point\\n\\tvar matches = rcssNum.exec( value );\\n\\treturn matches ?\\n\\n\\t\\t// Guard against undefined \\\"subtract\\\", e.g., when used as in cssHooks\\n\\t\\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \\\"px\\\" ) :\\n\\t\\tvalue;\\n}\\n\\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\\n\\tvar i = dimension === \\\"width\\\" ? 1 : 0,\\n\\t\\textra = 0,\\n\\t\\tdelta = 0,\\n\\t\\tmarginDelta = 0;\\n\\n\\t// Adjustment may not be necessary\\n\\tif ( box === ( isBorderBox ? \\\"border\\\" : \\\"content\\\" ) ) {\\n\\t\\treturn 0;\\n\\t}\\n\\n\\tfor ( ; i < 4; i += 2 ) {\\n\\n\\t\\t// Both box models exclude margin\\n\\t\\t// Count margin delta separately to only add it after scroll gutter adjustment.\\n\\t\\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\\n\\t\\tif ( box === \\\"margin\\\" ) {\\n\\t\\t\\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\\n\\t\\t}\\n\\n\\t\\t// If we get here with a content-box, we're seeking \\\"padding\\\" or \\\"border\\\" or \\\"margin\\\"\\n\\t\\tif ( !isBorderBox ) {\\n\\n\\t\\t\\t// Add padding\\n\\t\\t\\tdelta += jQuery.css( elem, \\\"padding\\\" + cssExpand[ i ], true, styles );\\n\\n\\t\\t\\t// For \\\"border\\\" or \\\"margin\\\", add border\\n\\t\\t\\tif ( box !== \\\"padding\\\" ) {\\n\\t\\t\\t\\tdelta += jQuery.css( elem, \\\"border\\\" + cssExpand[ i ] + \\\"Width\\\", true, styles );\\n\\n\\t\\t\\t// But still keep track of it otherwise\\n\\t\\t\\t} else {\\n\\t\\t\\t\\textra += jQuery.css( elem, \\\"border\\\" + cssExpand[ i ] + \\\"Width\\\", true, styles );\\n\\t\\t\\t}\\n\\n\\t\\t// If we get here with a border-box (content + padding + border), we're seeking \\\"content\\\" or\\n\\t\\t// \\\"padding\\\" or \\\"margin\\\"\\n\\t\\t} else {\\n\\n\\t\\t\\t// For \\\"content\\\", subtract padding\\n\\t\\t\\tif ( box === \\\"content\\\" ) {\\n\\t\\t\\t\\tdelta -= jQuery.css( elem, \\\"padding\\\" + cssExpand[ i ], true, styles );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// For \\\"content\\\" or \\\"padding\\\", subtract border\\n\\t\\t\\tif ( box !== \\\"margin\\\" ) {\\n\\t\\t\\t\\tdelta -= jQuery.css( elem, \\\"border\\\" + cssExpand[ i ] + \\\"Width\\\", true, styles );\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// Account for positive content-box scroll gutter when requested by providing computedVal\\n\\tif ( !isBorderBox && computedVal >= 0 ) {\\n\\n\\t\\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\\n\\t\\t// Assuming integer scroll gutter, subtract the rest and round down\\n\\t\\tdelta += Math.max( 0, Math.ceil(\\n\\t\\t\\telem[ \\\"offset\\\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\\n\\t\\t\\tcomputedVal -\\n\\t\\t\\tdelta -\\n\\t\\t\\textra -\\n\\t\\t\\t0.5\\n\\n\\t\\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\\n\\t\\t// Use an explicit zero to avoid NaN (gh-3964)\\n\\t\\t) ) || 0;\\n\\t}\\n\\n\\treturn delta + marginDelta;\\n}\\n\\nfunction getWidthOrHeight( elem, dimension, extra ) {\\n\\n\\t// Start with computed style\\n\\tvar styles = getStyles( elem ),\\n\\n\\t\\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\\n\\t\\t// Fake content-box until we know it's needed to know the true value.\\n\\t\\tboxSizingNeeded = !support.boxSizingReliable() || extra,\\n\\t\\tisBorderBox = boxSizingNeeded &&\\n\\t\\t\\tjQuery.css( elem, \\\"boxSizing\\\", false, styles ) === \\\"border-box\\\",\\n\\t\\tvalueIsBorderBox = isBorderBox,\\n\\n\\t\\tval = curCSS( elem, dimension, styles ),\\n\\t\\toffsetProp = \\\"offset\\\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\\n\\n\\t// Support: Firefox <=54\\n\\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\\n\\tif ( rnumnonpx.test( val ) ) {\\n\\t\\tif ( !extra ) {\\n\\t\\t\\treturn val;\\n\\t\\t}\\n\\t\\tval = \\\"auto\\\";\\n\\t}\\n\\n\\n\\t// Support: IE 9 - 11 only\\n\\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\\n\\t// In those cases, the computed value can be trusted to be border-box.\\n\\tif ( ( !support.boxSizingReliable() && isBorderBox ||\\n\\n\\t\\t// Support: IE 10 - 11+, Edge 15 - 18+\\n\\t\\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\\n\\t\\t// set in CSS while `offset*` properties report correct values.\\n\\t\\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\\n\\t\\t!support.reliableTrDimensions() && nodeName( elem, \\\"tr\\\" ) ||\\n\\n\\t\\t// Fall back to offsetWidth/offsetHeight when value is \\\"auto\\\"\\n\\t\\t// This happens for inline elements with no explicit setting (gh-3571)\\n\\t\\tval === \\\"auto\\\" ||\\n\\n\\t\\t// Support: Android <=4.1 - 4.3 only\\n\\t\\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\\n\\t\\t!parseFloat( val ) && jQuery.css( elem, \\\"display\\\", false, styles ) === \\\"inline\\\" ) &&\\n\\n\\t\\t// Make sure the element is visible & connected\\n\\t\\telem.getClientRects().length ) {\\n\\n\\t\\tisBorderBox = jQuery.css( elem, \\\"boxSizing\\\", false, styles ) === \\\"border-box\\\";\\n\\n\\t\\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\\n\\t\\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\\n\\t\\t// retrieved value as a content box dimension.\\n\\t\\tvalueIsBorderBox = offsetProp in elem;\\n\\t\\tif ( valueIsBorderBox ) {\\n\\t\\t\\tval = elem[ offsetProp ];\\n\\t\\t}\\n\\t}\\n\\n\\t// Normalize \\\"\\\" and auto\\n\\tval = parseFloat( val ) || 0;\\n\\n\\t// Adjust for the element's box model\\n\\treturn ( val +\\n\\t\\tboxModelAdjustment(\\n\\t\\t\\telem,\\n\\t\\t\\tdimension,\\n\\t\\t\\textra || ( isBorderBox ? \\\"border\\\" : \\\"content\\\" ),\\n\\t\\t\\tvalueIsBorderBox,\\n\\t\\t\\tstyles,\\n\\n\\t\\t\\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\\n\\t\\t\\tval\\n\\t\\t)\\n\\t) + \\\"px\\\";\\n}\\n\\njQuery.extend( {\\n\\n\\t// Add in style property hooks for overriding the default\\n\\t// behavior of getting and setting a style property\\n\\tcssHooks: {\\n\\t\\topacity: {\\n\\t\\t\\tget: function( elem, computed ) {\\n\\t\\t\\t\\tif ( computed ) {\\n\\n\\t\\t\\t\\t\\t// We should always get a number back from opacity\\n\\t\\t\\t\\t\\tvar ret = curCSS( elem, \\\"opacity\\\" );\\n\\t\\t\\t\\t\\treturn ret === \\\"\\\" ? \\\"1\\\" : ret;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t},\\n\\n\\t// Don't automatically add \\\"px\\\" to these possibly-unitless properties\\n\\tcssNumber: {\\n\\t\\tanimationIterationCount: true,\\n\\t\\taspectRatio: true,\\n\\t\\tborderImageSlice: true,\\n\\t\\tcolumnCount: true,\\n\\t\\tflexGrow: true,\\n\\t\\tflexShrink: true,\\n\\t\\tfontWeight: true,\\n\\t\\tgridArea: true,\\n\\t\\tgridColumn: true,\\n\\t\\tgridColumnEnd: true,\\n\\t\\tgridColumnStart: true,\\n\\t\\tgridRow: true,\\n\\t\\tgridRowEnd: true,\\n\\t\\tgridRowStart: true,\\n\\t\\tlineHeight: true,\\n\\t\\topacity: true,\\n\\t\\torder: true,\\n\\t\\torphans: true,\\n\\t\\tscale: true,\\n\\t\\twidows: true,\\n\\t\\tzIndex: true,\\n\\t\\tzoom: true,\\n\\n\\t\\t// SVG-related\\n\\t\\tfillOpacity: true,\\n\\t\\tfloodOpacity: true,\\n\\t\\tstopOpacity: true,\\n\\t\\tstrokeMiterlimit: true,\\n\\t\\tstrokeOpacity: true\\n\\t},\\n\\n\\t// Add in properties whose names you wish to fix before\\n\\t// setting or getting the value\\n\\tcssProps: {},\\n\\n\\t// Get and set the style property on a DOM Node\\n\\tstyle: function( elem, name, value, extra ) {\\n\\n\\t\\t// Don't set styles on text and comment nodes\\n\\t\\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\t// Make sure that we're working with the right name\\n\\t\\tvar ret, type, hooks,\\n\\t\\t\\torigName = camelCase( name ),\\n\\t\\t\\tisCustomProp = rcustomProp.test( name ),\\n\\t\\t\\tstyle = elem.style;\\n\\n\\t\\t// Make sure that we're working with the right name. We don't\\n\\t\\t// want to query the value if it is a CSS custom property\\n\\t\\t// since they are user-defined.\\n\\t\\tif ( !isCustomProp ) {\\n\\t\\t\\tname = finalPropName( origName );\\n\\t\\t}\\n\\n\\t\\t// Gets hook for the prefixed version, then unprefixed version\\n\\t\\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\\n\\n\\t\\t// Check if we're setting a value\\n\\t\\tif ( value !== undefined ) {\\n\\t\\t\\ttype = typeof value;\\n\\n\\t\\t\\t// Convert \\\"+=\\\" or \\\"-=\\\" to relative numbers (trac-7345)\\n\\t\\t\\tif ( type === \\\"string\\\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\\n\\t\\t\\t\\tvalue = adjustCSS( elem, name, ret );\\n\\n\\t\\t\\t\\t// Fixes bug trac-9237\\n\\t\\t\\t\\ttype = \\\"number\\\";\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Make sure that null and NaN values aren't set (trac-7116)\\n\\t\\t\\tif ( value == null || value !== value ) {\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// If a number was passed in, add the unit (except for certain CSS properties)\\n\\t\\t\\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\\n\\t\\t\\t// \\\"px\\\" to a few hardcoded values.\\n\\t\\t\\tif ( type === \\\"number\\\" && !isCustomProp ) {\\n\\t\\t\\t\\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \\\"\\\" : \\\"px\\\" );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// background-* props affect original clone's values\\n\\t\\t\\tif ( !support.clearCloneStyle && value === \\\"\\\" && name.indexOf( \\\"background\\\" ) === 0 ) {\\n\\t\\t\\t\\tstyle[ name ] = \\\"inherit\\\";\\n\\t\\t\\t}\\n\\n\\t\\t\\t// If a hook was provided, use that value, otherwise just set the specified value\\n\\t\\t\\tif ( !hooks || !( \\\"set\\\" in hooks ) ||\\n\\t\\t\\t\\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\\n\\n\\t\\t\\t\\tif ( isCustomProp ) {\\n\\t\\t\\t\\t\\tstyle.setProperty( name, value );\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tstyle[ name ] = value;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t} else {\\n\\n\\t\\t\\t// If a hook was provided get the non-computed value from there\\n\\t\\t\\tif ( hooks && \\\"get\\\" in hooks &&\\n\\t\\t\\t\\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\\n\\n\\t\\t\\t\\treturn ret;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Otherwise just get the value from the style object\\n\\t\\t\\treturn style[ name ];\\n\\t\\t}\\n\\t},\\n\\n\\tcss: function( elem, name, extra, styles ) {\\n\\t\\tvar val, num, hooks,\\n\\t\\t\\torigName = camelCase( name ),\\n\\t\\t\\tisCustomProp = rcustomProp.test( name );\\n\\n\\t\\t// Make sure that we're working with the right name. We don't\\n\\t\\t// want to modify the value if it is a CSS custom property\\n\\t\\t// since they are user-defined.\\n\\t\\tif ( !isCustomProp ) {\\n\\t\\t\\tname = finalPropName( origName );\\n\\t\\t}\\n\\n\\t\\t// Try prefixed name followed by the unprefixed name\\n\\t\\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\\n\\n\\t\\t// If a hook was provided get the computed value from there\\n\\t\\tif ( hooks && \\\"get\\\" in hooks ) {\\n\\t\\t\\tval = hooks.get( elem, true, extra );\\n\\t\\t}\\n\\n\\t\\t// Otherwise, if a way to get the computed value exists, use that\\n\\t\\tif ( val === undefined ) {\\n\\t\\t\\tval = curCSS( elem, name, styles );\\n\\t\\t}\\n\\n\\t\\t// Convert \\\"normal\\\" to computed value\\n\\t\\tif ( val === \\\"normal\\\" && name in cssNormalTransform ) {\\n\\t\\t\\tval = cssNormalTransform[ name ];\\n\\t\\t}\\n\\n\\t\\t// Make numeric if forced or a qualifier was provided and val looks numeric\\n\\t\\tif ( extra === \\\"\\\" || extra ) {\\n\\t\\t\\tnum = parseFloat( val );\\n\\t\\t\\treturn extra === true || isFinite( num ) ? num || 0 : val;\\n\\t\\t}\\n\\n\\t\\treturn val;\\n\\t}\\n} );\\n\\njQuery.each( [ \\\"height\\\", \\\"width\\\" ], function( _i, dimension ) {\\n\\tjQuery.cssHooks[ dimension ] = {\\n\\t\\tget: function( elem, computed, extra ) {\\n\\t\\t\\tif ( computed ) {\\n\\n\\t\\t\\t\\t// Certain elements can have dimension info if we invisibly show them\\n\\t\\t\\t\\t// but it must have a current display style that would benefit\\n\\t\\t\\t\\treturn rdisplayswap.test( jQuery.css( elem, \\\"display\\\" ) ) &&\\n\\n\\t\\t\\t\\t\\t// Support: Safari 8+\\n\\t\\t\\t\\t\\t// Table columns in Safari have non-zero offsetWidth & zero\\n\\t\\t\\t\\t\\t// getBoundingClientRect().width unless display is changed.\\n\\t\\t\\t\\t\\t// Support: IE <=11 only\\n\\t\\t\\t\\t\\t// Running getBoundingClientRect on a disconnected node\\n\\t\\t\\t\\t\\t// in IE throws an error.\\n\\t\\t\\t\\t\\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\\n\\t\\t\\t\\t\\tswap( elem, cssShow, function() {\\n\\t\\t\\t\\t\\t\\treturn getWidthOrHeight( elem, dimension, extra );\\n\\t\\t\\t\\t\\t} ) :\\n\\t\\t\\t\\t\\tgetWidthOrHeight( elem, dimension, extra );\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\tset: function( elem, value, extra ) {\\n\\t\\t\\tvar matches,\\n\\t\\t\\t\\tstyles = getStyles( elem ),\\n\\n\\t\\t\\t\\t// Only read styles.position if the test has a chance to fail\\n\\t\\t\\t\\t// to avoid forcing a reflow.\\n\\t\\t\\t\\tscrollboxSizeBuggy = !support.scrollboxSize() &&\\n\\t\\t\\t\\t\\tstyles.position === \\\"absolute\\\",\\n\\n\\t\\t\\t\\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\\n\\t\\t\\t\\tboxSizingNeeded = scrollboxSizeBuggy || extra,\\n\\t\\t\\t\\tisBorderBox = boxSizingNeeded &&\\n\\t\\t\\t\\t\\tjQuery.css( elem, \\\"boxSizing\\\", false, styles ) === \\\"border-box\\\",\\n\\t\\t\\t\\tsubtract = extra ?\\n\\t\\t\\t\\t\\tboxModelAdjustment(\\n\\t\\t\\t\\t\\t\\telem,\\n\\t\\t\\t\\t\\t\\tdimension,\\n\\t\\t\\t\\t\\t\\textra,\\n\\t\\t\\t\\t\\t\\tisBorderBox,\\n\\t\\t\\t\\t\\t\\tstyles\\n\\t\\t\\t\\t\\t) :\\n\\t\\t\\t\\t\\t0;\\n\\n\\t\\t\\t// Account for unreliable border-box dimensions by comparing offset* to computed and\\n\\t\\t\\t// faking a content-box to get border and padding (gh-3699)\\n\\t\\t\\tif ( isBorderBox && scrollboxSizeBuggy ) {\\n\\t\\t\\t\\tsubtract -= Math.ceil(\\n\\t\\t\\t\\t\\telem[ \\\"offset\\\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\\n\\t\\t\\t\\t\\tparseFloat( styles[ dimension ] ) -\\n\\t\\t\\t\\t\\tboxModelAdjustment( elem, dimension, \\\"border\\\", false, styles ) -\\n\\t\\t\\t\\t\\t0.5\\n\\t\\t\\t\\t);\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Convert to pixels if value adjustment is needed\\n\\t\\t\\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\\n\\t\\t\\t\\t( matches[ 3 ] || \\\"px\\\" ) !== \\\"px\\\" ) {\\n\\n\\t\\t\\t\\telem.style[ dimension ] = value;\\n\\t\\t\\t\\tvalue = jQuery.css( elem, dimension );\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn setPositiveNumber( elem, value, subtract );\\n\\t\\t}\\n\\t};\\n} );\\n\\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\\n\\tfunction( elem, computed ) {\\n\\t\\tif ( computed ) {\\n\\t\\t\\treturn ( parseFloat( curCSS( elem, \\\"marginLeft\\\" ) ) ||\\n\\t\\t\\t\\telem.getBoundingClientRect().left -\\n\\t\\t\\t\\t\\tswap( elem, { marginLeft: 0 }, function() {\\n\\t\\t\\t\\t\\t\\treturn elem.getBoundingClientRect().left;\\n\\t\\t\\t\\t\\t} )\\n\\t\\t\\t) + \\\"px\\\";\\n\\t\\t}\\n\\t}\\n);\\n\\n// These hooks are used by animate to expand properties\\njQuery.each( {\\n\\tmargin: \\\"\\\",\\n\\tpadding: \\\"\\\",\\n\\tborder: \\\"Width\\\"\\n}, function( prefix, suffix ) {\\n\\tjQuery.cssHooks[ prefix + suffix ] = {\\n\\t\\texpand: function( value ) {\\n\\t\\t\\tvar i = 0,\\n\\t\\t\\t\\texpanded = {},\\n\\n\\t\\t\\t\\t// Assumes a single number if not a string\\n\\t\\t\\t\\tparts = typeof value === \\\"string\\\" ? value.split( \\\" \\\" ) : [ value ];\\n\\n\\t\\t\\tfor ( ; i < 4; i++ ) {\\n\\t\\t\\t\\texpanded[ prefix + cssExpand[ i ] + suffix ] =\\n\\t\\t\\t\\t\\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn expanded;\\n\\t\\t}\\n\\t};\\n\\n\\tif ( prefix !== \\\"margin\\\" ) {\\n\\t\\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\\n\\t}\\n} );\\n\\njQuery.fn.extend( {\\n\\tcss: function( name, value ) {\\n\\t\\treturn access( this, function( elem, name, value ) {\\n\\t\\t\\tvar styles, len,\\n\\t\\t\\t\\tmap = {},\\n\\t\\t\\t\\ti = 0;\\n\\n\\t\\t\\tif ( Array.isArray( name ) ) {\\n\\t\\t\\t\\tstyles = getStyles( elem );\\n\\t\\t\\t\\tlen = name.length;\\n\\n\\t\\t\\t\\tfor ( ; i < len; i++ ) {\\n\\t\\t\\t\\t\\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn map;\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn value !== undefined ?\\n\\t\\t\\t\\tjQuery.style( elem, name, value ) :\\n\\t\\t\\t\\tjQuery.css( elem, name );\\n\\t\\t}, name, value, arguments.length > 1 );\\n\\t}\\n} );\\n\\n\\nfunction Tween( elem, options, prop, end, easing ) {\\n\\treturn new Tween.prototype.init( elem, options, prop, end, easing );\\n}\\njQuery.Tween = Tween;\\n\\nTween.prototype = {\\n\\tconstructor: Tween,\\n\\tinit: function( elem, options, prop, end, easing, unit ) {\\n\\t\\tthis.elem = elem;\\n\\t\\tthis.prop = prop;\\n\\t\\tthis.easing = easing || jQuery.easing._default;\\n\\t\\tthis.options = options;\\n\\t\\tthis.start = this.now = this.cur();\\n\\t\\tthis.end = end;\\n\\t\\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \\\"\\\" : \\\"px\\\" );\\n\\t},\\n\\tcur: function() {\\n\\t\\tvar hooks = Tween.propHooks[ this.prop ];\\n\\n\\t\\treturn hooks && hooks.get ?\\n\\t\\t\\thooks.get( this ) :\\n\\t\\t\\tTween.propHooks._default.get( this );\\n\\t},\\n\\trun: function( percent ) {\\n\\t\\tvar eased,\\n\\t\\t\\thooks = Tween.propHooks[ this.prop ];\\n\\n\\t\\tif ( this.options.duration ) {\\n\\t\\t\\tthis.pos = eased = jQuery.easing[ this.easing ](\\n\\t\\t\\t\\tpercent, this.options.duration * percent, 0, 1, this.options.duration\\n\\t\\t\\t);\\n\\t\\t} else {\\n\\t\\t\\tthis.pos = eased = percent;\\n\\t\\t}\\n\\t\\tthis.now = ( this.end - this.start ) * eased + this.start;\\n\\n\\t\\tif ( this.options.step ) {\\n\\t\\t\\tthis.options.step.call( this.elem, this.now, this );\\n\\t\\t}\\n\\n\\t\\tif ( hooks && hooks.set ) {\\n\\t\\t\\thooks.set( this );\\n\\t\\t} else {\\n\\t\\t\\tTween.propHooks._default.set( this );\\n\\t\\t}\\n\\t\\treturn this;\\n\\t}\\n};\\n\\nTween.prototype.init.prototype = Tween.prototype;\\n\\nTween.propHooks = {\\n\\t_default: {\\n\\t\\tget: function( tween ) {\\n\\t\\t\\tvar result;\\n\\n\\t\\t\\t// Use a property on the element directly when it is not a DOM element,\\n\\t\\t\\t// or when there is no matching style property that exists.\\n\\t\\t\\tif ( tween.elem.nodeType !== 1 ||\\n\\t\\t\\t\\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\\n\\t\\t\\t\\treturn tween.elem[ tween.prop ];\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Passing an empty string as a 3rd parameter to .css will automatically\\n\\t\\t\\t// attempt a parseFloat and fallback to a string if the parse fails.\\n\\t\\t\\t// Simple values such as \\\"10px\\\" are parsed to Float;\\n\\t\\t\\t// complex values such as \\\"rotate(1rad)\\\" are returned as-is.\\n\\t\\t\\tresult = jQuery.css( tween.elem, tween.prop, \\\"\\\" );\\n\\n\\t\\t\\t// Empty strings, null, undefined and \\\"auto\\\" are converted to 0.\\n\\t\\t\\treturn !result || result === \\\"auto\\\" ? 0 : result;\\n\\t\\t},\\n\\t\\tset: function( tween ) {\\n\\n\\t\\t\\t// Use step hook for back compat.\\n\\t\\t\\t// Use cssHook if its there.\\n\\t\\t\\t// Use .style if available and use plain properties where available.\\n\\t\\t\\tif ( jQuery.fx.step[ tween.prop ] ) {\\n\\t\\t\\t\\tjQuery.fx.step[ tween.prop ]( tween );\\n\\t\\t\\t} else if ( tween.elem.nodeType === 1 && (\\n\\t\\t\\t\\tjQuery.cssHooks[ tween.prop ] ||\\n\\t\\t\\t\\t\\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\\n\\t\\t\\t\\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\\n\\t\\t\\t} else {\\n\\t\\t\\t\\ttween.elem[ tween.prop ] = tween.now;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n};\\n\\n// Support: IE <=9 only\\n// Panic based approach to setting things on disconnected nodes\\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\\n\\tset: function( tween ) {\\n\\t\\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\\n\\t\\t\\ttween.elem[ tween.prop ] = tween.now;\\n\\t\\t}\\n\\t}\\n};\\n\\njQuery.easing = {\\n\\tlinear: function( p ) {\\n\\t\\treturn p;\\n\\t},\\n\\tswing: function( p ) {\\n\\t\\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\\n\\t},\\n\\t_default: \\\"swing\\\"\\n};\\n\\njQuery.fx = Tween.prototype.init;\\n\\n// Back compat <1.8 extension point\\njQuery.fx.step = {};\\n\\n\\n\\n\\nvar\\n\\tfxNow, inProgress,\\n\\trfxtypes = /^(?:toggle|show|hide)$/,\\n\\trrun = /queueHooks$/;\\n\\nfunction schedule() {\\n\\tif ( inProgress ) {\\n\\t\\tif ( document.hidden === false && window.requestAnimationFrame ) {\\n\\t\\t\\twindow.requestAnimationFrame( schedule );\\n\\t\\t} else {\\n\\t\\t\\twindow.setTimeout( schedule, jQuery.fx.interval );\\n\\t\\t}\\n\\n\\t\\tjQuery.fx.tick();\\n\\t}\\n}\\n\\n// Animations created synchronously will run synchronously\\nfunction createFxNow() {\\n\\twindow.setTimeout( function() {\\n\\t\\tfxNow = undefined;\\n\\t} );\\n\\treturn ( fxNow = Date.now() );\\n}\\n\\n// Generate parameters to create a standard animation\\nfunction genFx( type, includeWidth ) {\\n\\tvar which,\\n\\t\\ti = 0,\\n\\t\\tattrs = { height: type };\\n\\n\\t// If we include width, step value is 1 to do all cssExpand values,\\n\\t// otherwise step value is 2 to skip over Left and Right\\n\\tincludeWidth = includeWidth ? 1 : 0;\\n\\tfor ( ; i < 4; i += 2 - includeWidth ) {\\n\\t\\twhich = cssExpand[ i ];\\n\\t\\tattrs[ \\\"margin\\\" + which ] = attrs[ \\\"padding\\\" + which ] = type;\\n\\t}\\n\\n\\tif ( includeWidth ) {\\n\\t\\tattrs.opacity = attrs.width = type;\\n\\t}\\n\\n\\treturn attrs;\\n}\\n\\nfunction createTween( value, prop, animation ) {\\n\\tvar tween,\\n\\t\\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \\\"*\\\" ] ),\\n\\t\\tindex = 0,\\n\\t\\tlength = collection.length;\\n\\tfor ( ; index < length; index++ ) {\\n\\t\\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\\n\\n\\t\\t\\t// We're done with this property\\n\\t\\t\\treturn tween;\\n\\t\\t}\\n\\t}\\n}\\n\\nfunction defaultPrefilter( elem, props, opts ) {\\n\\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\\n\\t\\tisBox = \\\"width\\\" in props || \\\"height\\\" in props,\\n\\t\\tanim = this,\\n\\t\\torig = {},\\n\\t\\tstyle = elem.style,\\n\\t\\thidden = elem.nodeType && isHiddenWithinTree( elem ),\\n\\t\\tdataShow = dataPriv.get( elem, \\\"fxshow\\\" );\\n\\n\\t// Queue-skipping animations hijack the fx hooks\\n\\tif ( !opts.queue ) {\\n\\t\\thooks = jQuery._queueHooks( elem, \\\"fx\\\" );\\n\\t\\tif ( hooks.unqueued == null ) {\\n\\t\\t\\thooks.unqueued = 0;\\n\\t\\t\\toldfire = hooks.empty.fire;\\n\\t\\t\\thooks.empty.fire = function() {\\n\\t\\t\\t\\tif ( !hooks.unqueued ) {\\n\\t\\t\\t\\t\\toldfire();\\n\\t\\t\\t\\t}\\n\\t\\t\\t};\\n\\t\\t}\\n\\t\\thooks.unqueued++;\\n\\n\\t\\tanim.always( function() {\\n\\n\\t\\t\\t// Ensure the complete handler is called before this completes\\n\\t\\t\\tanim.always( function() {\\n\\t\\t\\t\\thooks.unqueued--;\\n\\t\\t\\t\\tif ( !jQuery.queue( elem, \\\"fx\\\" ).length ) {\\n\\t\\t\\t\\t\\thooks.empty.fire();\\n\\t\\t\\t\\t}\\n\\t\\t\\t} );\\n\\t\\t} );\\n\\t}\\n\\n\\t// Detect show/hide animations\\n\\tfor ( prop in props ) {\\n\\t\\tvalue = props[ prop ];\\n\\t\\tif ( rfxtypes.test( value ) ) {\\n\\t\\t\\tdelete props[ prop ];\\n\\t\\t\\ttoggle = toggle || value === \\\"toggle\\\";\\n\\t\\t\\tif ( value === ( hidden ? \\\"hide\\\" : \\\"show\\\" ) ) {\\n\\n\\t\\t\\t\\t// Pretend to be hidden if this is a \\\"show\\\" and\\n\\t\\t\\t\\t// there is still data from a stopped show/hide\\n\\t\\t\\t\\tif ( value === \\\"show\\\" && dataShow && dataShow[ prop ] !== undefined ) {\\n\\t\\t\\t\\t\\thidden = true;\\n\\n\\t\\t\\t\\t// Ignore all other no-op show/hide data\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tcontinue;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\\n\\t\\t}\\n\\t}\\n\\n\\t// Bail out if this is a no-op like .hide().hide()\\n\\tpropTween = !jQuery.isEmptyObject( props );\\n\\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\\n\\t\\treturn;\\n\\t}\\n\\n\\t// Restrict \\\"overflow\\\" and \\\"display\\\" styles during box animations\\n\\tif ( isBox && elem.nodeType === 1 ) {\\n\\n\\t\\t// Support: IE <=9 - 11, Edge 12 - 15\\n\\t\\t// Record all 3 overflow attributes because IE does not infer the shorthand\\n\\t\\t// from identically-valued overflowX and overflowY and Edge just mirrors\\n\\t\\t// the overflowX value there.\\n\\t\\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\\n\\n\\t\\t// Identify a display type, preferring old show/hide data over the CSS cascade\\n\\t\\trestoreDisplay = dataShow && dataShow.display;\\n\\t\\tif ( restoreDisplay == null ) {\\n\\t\\t\\trestoreDisplay = dataPriv.get( elem, \\\"display\\\" );\\n\\t\\t}\\n\\t\\tdisplay = jQuery.css( elem, \\\"display\\\" );\\n\\t\\tif ( display === \\\"none\\\" ) {\\n\\t\\t\\tif ( restoreDisplay ) {\\n\\t\\t\\t\\tdisplay = restoreDisplay;\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// Get nonempty value(s) by temporarily forcing visibility\\n\\t\\t\\t\\tshowHide( [ elem ], true );\\n\\t\\t\\t\\trestoreDisplay = elem.style.display || restoreDisplay;\\n\\t\\t\\t\\tdisplay = jQuery.css( elem, \\\"display\\\" );\\n\\t\\t\\t\\tshowHide( [ elem ] );\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Animate inline elements as inline-block\\n\\t\\tif ( display === \\\"inline\\\" || display === \\\"inline-block\\\" && restoreDisplay != null ) {\\n\\t\\t\\tif ( jQuery.css( elem, \\\"float\\\" ) === \\\"none\\\" ) {\\n\\n\\t\\t\\t\\t// Restore the original display value at the end of pure show/hide animations\\n\\t\\t\\t\\tif ( !propTween ) {\\n\\t\\t\\t\\t\\tanim.done( function() {\\n\\t\\t\\t\\t\\t\\tstyle.display = restoreDisplay;\\n\\t\\t\\t\\t\\t} );\\n\\t\\t\\t\\t\\tif ( restoreDisplay == null ) {\\n\\t\\t\\t\\t\\t\\tdisplay = style.display;\\n\\t\\t\\t\\t\\t\\trestoreDisplay = display === \\\"none\\\" ? \\\"\\\" : display;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tstyle.display = \\\"inline-block\\\";\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tif ( opts.overflow ) {\\n\\t\\tstyle.overflow = \\\"hidden\\\";\\n\\t\\tanim.always( function() {\\n\\t\\t\\tstyle.overflow = opts.overflow[ 0 ];\\n\\t\\t\\tstyle.overflowX = opts.overflow[ 1 ];\\n\\t\\t\\tstyle.overflowY = opts.overflow[ 2 ];\\n\\t\\t} );\\n\\t}\\n\\n\\t// Implement show/hide animations\\n\\tpropTween = false;\\n\\tfor ( prop in orig ) {\\n\\n\\t\\t// General show/hide setup for this element animation\\n\\t\\tif ( !propTween ) {\\n\\t\\t\\tif ( dataShow ) {\\n\\t\\t\\t\\tif ( \\\"hidden\\\" in dataShow ) {\\n\\t\\t\\t\\t\\thidden = dataShow.hidden;\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tdataShow = dataPriv.access( elem, \\\"fxshow\\\", { display: restoreDisplay } );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Store hidden/visible for toggle so `.stop().toggle()` \\\"reverses\\\"\\n\\t\\t\\tif ( toggle ) {\\n\\t\\t\\t\\tdataShow.hidden = !hidden;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Show elements before animating them\\n\\t\\t\\tif ( hidden ) {\\n\\t\\t\\t\\tshowHide( [ elem ], true );\\n\\t\\t\\t}\\n\\n\\t\\t\\t/* eslint-disable no-loop-func */\\n\\n\\t\\t\\tanim.done( function() {\\n\\n\\t\\t\\t\\t/* eslint-enable no-loop-func */\\n\\n\\t\\t\\t\\t// The final step of a \\\"hide\\\" animation is actually hiding the element\\n\\t\\t\\t\\tif ( !hidden ) {\\n\\t\\t\\t\\t\\tshowHide( [ elem ] );\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tdataPriv.remove( elem, \\\"fxshow\\\" );\\n\\t\\t\\t\\tfor ( prop in orig ) {\\n\\t\\t\\t\\t\\tjQuery.style( elem, prop, orig[ prop ] );\\n\\t\\t\\t\\t}\\n\\t\\t\\t} );\\n\\t\\t}\\n\\n\\t\\t// Per-property setup\\n\\t\\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\\n\\t\\tif ( !( prop in dataShow ) ) {\\n\\t\\t\\tdataShow[ prop ] = propTween.start;\\n\\t\\t\\tif ( hidden ) {\\n\\t\\t\\t\\tpropTween.end = propTween.start;\\n\\t\\t\\t\\tpropTween.start = 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\nfunction propFilter( props, specialEasing ) {\\n\\tvar index, name, easing, value, hooks;\\n\\n\\t// camelCase, specialEasing and expand cssHook pass\\n\\tfor ( index in props ) {\\n\\t\\tname = camelCase( index );\\n\\t\\teasing = specialEasing[ name ];\\n\\t\\tvalue = props[ index ];\\n\\t\\tif ( Array.isArray( value ) ) {\\n\\t\\t\\teasing = value[ 1 ];\\n\\t\\t\\tvalue = props[ index ] = value[ 0 ];\\n\\t\\t}\\n\\n\\t\\tif ( index !== name ) {\\n\\t\\t\\tprops[ name ] = value;\\n\\t\\t\\tdelete props[ index ];\\n\\t\\t}\\n\\n\\t\\thooks = jQuery.cssHooks[ name ];\\n\\t\\tif ( hooks && \\\"expand\\\" in hooks ) {\\n\\t\\t\\tvalue = hooks.expand( value );\\n\\t\\t\\tdelete props[ name ];\\n\\n\\t\\t\\t// Not quite $.extend, this won't overwrite existing keys.\\n\\t\\t\\t// Reusing 'index' because we have the correct \\\"name\\\"\\n\\t\\t\\tfor ( index in value ) {\\n\\t\\t\\t\\tif ( !( index in props ) ) {\\n\\t\\t\\t\\t\\tprops[ index ] = value[ index ];\\n\\t\\t\\t\\t\\tspecialEasing[ index ] = easing;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\tspecialEasing[ name ] = easing;\\n\\t\\t}\\n\\t}\\n}\\n\\nfunction Animation( elem, properties, options ) {\\n\\tvar result,\\n\\t\\tstopped,\\n\\t\\tindex = 0,\\n\\t\\tlength = Animation.prefilters.length,\\n\\t\\tdeferred = jQuery.Deferred().always( function() {\\n\\n\\t\\t\\t// Don't match elem in the :animated selector\\n\\t\\t\\tdelete tick.elem;\\n\\t\\t} ),\\n\\t\\ttick = function() {\\n\\t\\t\\tif ( stopped ) {\\n\\t\\t\\t\\treturn false;\\n\\t\\t\\t}\\n\\t\\t\\tvar currentTime = fxNow || createFxNow(),\\n\\t\\t\\t\\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\\n\\n\\t\\t\\t\\t// Support: Android 2.3 only\\n\\t\\t\\t\\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\\n\\t\\t\\t\\ttemp = remaining / animation.duration || 0,\\n\\t\\t\\t\\tpercent = 1 - temp,\\n\\t\\t\\t\\tindex = 0,\\n\\t\\t\\t\\tlength = animation.tweens.length;\\n\\n\\t\\t\\tfor ( ; index < length; index++ ) {\\n\\t\\t\\t\\tanimation.tweens[ index ].run( percent );\\n\\t\\t\\t}\\n\\n\\t\\t\\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\\n\\n\\t\\t\\t// If there's more to do, yield\\n\\t\\t\\tif ( percent < 1 && length ) {\\n\\t\\t\\t\\treturn remaining;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// If this was an empty animation, synthesize a final progress notification\\n\\t\\t\\tif ( !length ) {\\n\\t\\t\\t\\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Resolve the animation and report its conclusion\\n\\t\\t\\tdeferred.resolveWith( elem, [ animation ] );\\n\\t\\t\\treturn false;\\n\\t\\t},\\n\\t\\tanimation = deferred.promise( {\\n\\t\\t\\telem: elem,\\n\\t\\t\\tprops: jQuery.extend( {}, properties ),\\n\\t\\t\\topts: jQuery.extend( true, {\\n\\t\\t\\t\\tspecialEasing: {},\\n\\t\\t\\t\\teasing: jQuery.easing._default\\n\\t\\t\\t}, options ),\\n\\t\\t\\toriginalProperties: properties,\\n\\t\\t\\toriginalOptions: options,\\n\\t\\t\\tstartTime: fxNow || createFxNow(),\\n\\t\\t\\tduration: options.duration,\\n\\t\\t\\ttweens: [],\\n\\t\\t\\tcreateTween: function( prop, end ) {\\n\\t\\t\\t\\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\\n\\t\\t\\t\\t\\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\\n\\t\\t\\t\\tanimation.tweens.push( tween );\\n\\t\\t\\t\\treturn tween;\\n\\t\\t\\t},\\n\\t\\t\\tstop: function( gotoEnd ) {\\n\\t\\t\\t\\tvar index = 0,\\n\\n\\t\\t\\t\\t\\t// If we are going to the end, we want to run all the tweens\\n\\t\\t\\t\\t\\t// otherwise we skip this part\\n\\t\\t\\t\\t\\tlength = gotoEnd ? animation.tweens.length : 0;\\n\\t\\t\\t\\tif ( stopped ) {\\n\\t\\t\\t\\t\\treturn this;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tstopped = true;\\n\\t\\t\\t\\tfor ( ; index < length; index++ ) {\\n\\t\\t\\t\\t\\tanimation.tweens[ index ].run( 1 );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Resolve when we played the last frame; otherwise, reject\\n\\t\\t\\t\\tif ( gotoEnd ) {\\n\\t\\t\\t\\t\\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\\n\\t\\t\\t\\t\\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn this;\\n\\t\\t\\t}\\n\\t\\t} ),\\n\\t\\tprops = animation.props;\\n\\n\\tpropFilter( props, animation.opts.specialEasing );\\n\\n\\tfor ( ; index < length; index++ ) {\\n\\t\\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\\n\\t\\tif ( result ) {\\n\\t\\t\\tif ( isFunction( result.stop ) ) {\\n\\t\\t\\t\\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\\n\\t\\t\\t\\t\\tresult.stop.bind( result );\\n\\t\\t\\t}\\n\\t\\t\\treturn result;\\n\\t\\t}\\n\\t}\\n\\n\\tjQuery.map( props, createTween, animation );\\n\\n\\tif ( isFunction( animation.opts.start ) ) {\\n\\t\\tanimation.opts.start.call( elem, animation );\\n\\t}\\n\\n\\t// Attach callbacks from options\\n\\tanimation\\n\\t\\t.progress( animation.opts.progress )\\n\\t\\t.done( animation.opts.done, animation.opts.complete )\\n\\t\\t.fail( animation.opts.fail )\\n\\t\\t.always( animation.opts.always );\\n\\n\\tjQuery.fx.timer(\\n\\t\\tjQuery.extend( tick, {\\n\\t\\t\\telem: elem,\\n\\t\\t\\tanim: animation,\\n\\t\\t\\tqueue: animation.opts.queue\\n\\t\\t} )\\n\\t);\\n\\n\\treturn animation;\\n}\\n\\njQuery.Animation = jQuery.extend( Animation, {\\n\\n\\ttweeners: {\\n\\t\\t\\\"*\\\": [ function( prop, value ) {\\n\\t\\t\\tvar tween = this.createTween( prop, value );\\n\\t\\t\\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\\n\\t\\t\\treturn tween;\\n\\t\\t} ]\\n\\t},\\n\\n\\ttweener: function( props, callback ) {\\n\\t\\tif ( isFunction( props ) ) {\\n\\t\\t\\tcallback = props;\\n\\t\\t\\tprops = [ \\\"*\\\" ];\\n\\t\\t} else {\\n\\t\\t\\tprops = props.match( rnothtmlwhite );\\n\\t\\t}\\n\\n\\t\\tvar prop,\\n\\t\\t\\tindex = 0,\\n\\t\\t\\tlength = props.length;\\n\\n\\t\\tfor ( ; index < length; index++ ) {\\n\\t\\t\\tprop = props[ index ];\\n\\t\\t\\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\\n\\t\\t\\tAnimation.tweeners[ prop ].unshift( callback );\\n\\t\\t}\\n\\t},\\n\\n\\tprefilters: [ defaultPrefilter ],\\n\\n\\tprefilter: function( callback, prepend ) {\\n\\t\\tif ( prepend ) {\\n\\t\\t\\tAnimation.prefilters.unshift( callback );\\n\\t\\t} else {\\n\\t\\t\\tAnimation.prefilters.push( callback );\\n\\t\\t}\\n\\t}\\n} );\\n\\njQuery.speed = function( speed, easing, fn ) {\\n\\tvar opt = speed && typeof speed === \\\"object\\\" ? jQuery.extend( {}, speed ) : {\\n\\t\\tcomplete: fn || !fn && easing ||\\n\\t\\t\\tisFunction( speed ) && speed,\\n\\t\\tduration: speed,\\n\\t\\teasing: fn && easing || easing && !isFunction( easing ) && easing\\n\\t};\\n\\n\\t// Go to the end state if fx are off\\n\\tif ( jQuery.fx.off ) {\\n\\t\\topt.duration = 0;\\n\\n\\t} else {\\n\\t\\tif ( typeof opt.duration !== \\\"number\\\" ) {\\n\\t\\t\\tif ( opt.duration in jQuery.fx.speeds ) {\\n\\t\\t\\t\\topt.duration = jQuery.fx.speeds[ opt.duration ];\\n\\n\\t\\t\\t} else {\\n\\t\\t\\t\\topt.duration = jQuery.fx.speeds._default;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// Normalize opt.queue - true/undefined/null -> \\\"fx\\\"\\n\\tif ( opt.queue == null || opt.queue === true ) {\\n\\t\\topt.queue = \\\"fx\\\";\\n\\t}\\n\\n\\t// Queueing\\n\\topt.old = opt.complete;\\n\\n\\topt.complete = function() {\\n\\t\\tif ( isFunction( opt.old ) ) {\\n\\t\\t\\topt.old.call( this );\\n\\t\\t}\\n\\n\\t\\tif ( opt.queue ) {\\n\\t\\t\\tjQuery.dequeue( this, opt.queue );\\n\\t\\t}\\n\\t};\\n\\n\\treturn opt;\\n};\\n\\njQuery.fn.extend( {\\n\\tfadeTo: function( speed, to, easing, callback ) {\\n\\n\\t\\t// Show any hidden elements after setting opacity to 0\\n\\t\\treturn this.filter( isHiddenWithinTree ).css( \\\"opacity\\\", 0 ).show()\\n\\n\\t\\t\\t// Animate to the value specified\\n\\t\\t\\t.end().animate( { opacity: to }, speed, easing, callback );\\n\\t},\\n\\tanimate: function( prop, speed, easing, callback ) {\\n\\t\\tvar empty = jQuery.isEmptyObject( prop ),\\n\\t\\t\\toptall = jQuery.speed( speed, easing, callback ),\\n\\t\\t\\tdoAnimation = function() {\\n\\n\\t\\t\\t\\t// Operate on a copy of prop so per-property easing won't be lost\\n\\t\\t\\t\\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\\n\\n\\t\\t\\t\\t// Empty animations, or finishing resolves immediately\\n\\t\\t\\t\\tif ( empty || dataPriv.get( this, \\\"finish\\\" ) ) {\\n\\t\\t\\t\\t\\tanim.stop( true );\\n\\t\\t\\t\\t}\\n\\t\\t\\t};\\n\\n\\t\\tdoAnimation.finish = doAnimation;\\n\\n\\t\\treturn empty || optall.queue === false ?\\n\\t\\t\\tthis.each( doAnimation ) :\\n\\t\\t\\tthis.queue( optall.queue, doAnimation );\\n\\t},\\n\\tstop: function( type, clearQueue, gotoEnd ) {\\n\\t\\tvar stopQueue = function( hooks ) {\\n\\t\\t\\tvar stop = hooks.stop;\\n\\t\\t\\tdelete hooks.stop;\\n\\t\\t\\tstop( gotoEnd );\\n\\t\\t};\\n\\n\\t\\tif ( typeof type !== \\\"string\\\" ) {\\n\\t\\t\\tgotoEnd = clearQueue;\\n\\t\\t\\tclearQueue = type;\\n\\t\\t\\ttype = undefined;\\n\\t\\t}\\n\\t\\tif ( clearQueue ) {\\n\\t\\t\\tthis.queue( type || \\\"fx\\\", [] );\\n\\t\\t}\\n\\n\\t\\treturn this.each( function() {\\n\\t\\t\\tvar dequeue = true,\\n\\t\\t\\t\\tindex = type != null && type + \\\"queueHooks\\\",\\n\\t\\t\\t\\ttimers = jQuery.timers,\\n\\t\\t\\t\\tdata = dataPriv.get( this );\\n\\n\\t\\t\\tif ( index ) {\\n\\t\\t\\t\\tif ( data[ index ] && data[ index ].stop ) {\\n\\t\\t\\t\\t\\tstopQueue( data[ index ] );\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tfor ( index in data ) {\\n\\t\\t\\t\\t\\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\\n\\t\\t\\t\\t\\t\\tstopQueue( data[ index ] );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\tfor ( index = timers.length; index--; ) {\\n\\t\\t\\t\\tif ( timers[ index ].elem === this &&\\n\\t\\t\\t\\t\\t( type == null || timers[ index ].queue === type ) ) {\\n\\n\\t\\t\\t\\t\\ttimers[ index ].anim.stop( gotoEnd );\\n\\t\\t\\t\\t\\tdequeue = false;\\n\\t\\t\\t\\t\\ttimers.splice( index, 1 );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Start the next in the queue if the last step wasn't forced.\\n\\t\\t\\t// Timers currently will call their complete callbacks, which\\n\\t\\t\\t// will dequeue but only if they were gotoEnd.\\n\\t\\t\\tif ( dequeue || !gotoEnd ) {\\n\\t\\t\\t\\tjQuery.dequeue( this, type );\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t},\\n\\tfinish: function( type ) {\\n\\t\\tif ( type !== false ) {\\n\\t\\t\\ttype = type || \\\"fx\\\";\\n\\t\\t}\\n\\t\\treturn this.each( function() {\\n\\t\\t\\tvar index,\\n\\t\\t\\t\\tdata = dataPriv.get( this ),\\n\\t\\t\\t\\tqueue = data[ type + \\\"queue\\\" ],\\n\\t\\t\\t\\thooks = data[ type + \\\"queueHooks\\\" ],\\n\\t\\t\\t\\ttimers = jQuery.timers,\\n\\t\\t\\t\\tlength = queue ? queue.length : 0;\\n\\n\\t\\t\\t// Enable finishing flag on private data\\n\\t\\t\\tdata.finish = true;\\n\\n\\t\\t\\t// Empty the queue first\\n\\t\\t\\tjQuery.queue( this, type, [] );\\n\\n\\t\\t\\tif ( hooks && hooks.stop ) {\\n\\t\\t\\t\\thooks.stop.call( this, true );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Look for any active animations, and finish them\\n\\t\\t\\tfor ( index = timers.length; index--; ) {\\n\\t\\t\\t\\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\\n\\t\\t\\t\\t\\ttimers[ index ].anim.stop( true );\\n\\t\\t\\t\\t\\ttimers.splice( index, 1 );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Look for any animations in the old queue and finish them\\n\\t\\t\\tfor ( index = 0; index < length; index++ ) {\\n\\t\\t\\t\\tif ( queue[ index ] && queue[ index ].finish ) {\\n\\t\\t\\t\\t\\tqueue[ index ].finish.call( this );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Turn off finishing flag\\n\\t\\t\\tdelete data.finish;\\n\\t\\t} );\\n\\t}\\n} );\\n\\njQuery.each( [ \\\"toggle\\\", \\\"show\\\", \\\"hide\\\" ], function( _i, name ) {\\n\\tvar cssFn = jQuery.fn[ name ];\\n\\tjQuery.fn[ name ] = function( speed, easing, callback ) {\\n\\t\\treturn speed == null || typeof speed === \\\"boolean\\\" ?\\n\\t\\t\\tcssFn.apply( this, arguments ) :\\n\\t\\t\\tthis.animate( genFx( name, true ), speed, easing, callback );\\n\\t};\\n} );\\n\\n// Generate shortcuts for custom animations\\njQuery.each( {\\n\\tslideDown: genFx( \\\"show\\\" ),\\n\\tslideUp: genFx( \\\"hide\\\" ),\\n\\tslideToggle: genFx( \\\"toggle\\\" ),\\n\\tfadeIn: { opacity: \\\"show\\\" },\\n\\tfadeOut: { opacity: \\\"hide\\\" },\\n\\tfadeToggle: { opacity: \\\"toggle\\\" }\\n}, function( name, props ) {\\n\\tjQuery.fn[ name ] = function( speed, easing, callback ) {\\n\\t\\treturn this.animate( props, speed, easing, callback );\\n\\t};\\n} );\\n\\njQuery.timers = [];\\njQuery.fx.tick = function() {\\n\\tvar timer,\\n\\t\\ti = 0,\\n\\t\\ttimers = jQuery.timers;\\n\\n\\tfxNow = Date.now();\\n\\n\\tfor ( ; i < timers.length; i++ ) {\\n\\t\\ttimer = timers[ i ];\\n\\n\\t\\t// Run the timer and safely remove it when done (allowing for external removal)\\n\\t\\tif ( !timer() && timers[ i ] === timer ) {\\n\\t\\t\\ttimers.splice( i--, 1 );\\n\\t\\t}\\n\\t}\\n\\n\\tif ( !timers.length ) {\\n\\t\\tjQuery.fx.stop();\\n\\t}\\n\\tfxNow = undefined;\\n};\\n\\njQuery.fx.timer = function( timer ) {\\n\\tjQuery.timers.push( timer );\\n\\tjQuery.fx.start();\\n};\\n\\njQuery.fx.interval = 13;\\njQuery.fx.start = function() {\\n\\tif ( inProgress ) {\\n\\t\\treturn;\\n\\t}\\n\\n\\tinProgress = true;\\n\\tschedule();\\n};\\n\\njQuery.fx.stop = function() {\\n\\tinProgress = null;\\n};\\n\\njQuery.fx.speeds = {\\n\\tslow: 600,\\n\\tfast: 200,\\n\\n\\t// Default speed\\n\\t_default: 400\\n};\\n\\n\\n// Based off of the plugin by Clint Helfers, with permission.\\njQuery.fn.delay = function( time, type ) {\\n\\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\\n\\ttype = type || \\\"fx\\\";\\n\\n\\treturn this.queue( type, function( next, hooks ) {\\n\\t\\tvar timeout = window.setTimeout( next, time );\\n\\t\\thooks.stop = function() {\\n\\t\\t\\twindow.clearTimeout( timeout );\\n\\t\\t};\\n\\t} );\\n};\\n\\n\\n( function() {\\n\\tvar input = document.createElement( \\\"input\\\" ),\\n\\t\\tselect = document.createElement( \\\"select\\\" ),\\n\\t\\topt = select.appendChild( document.createElement( \\\"option\\\" ) );\\n\\n\\tinput.type = \\\"checkbox\\\";\\n\\n\\t// Support: Android <=4.3 only\\n\\t// Default value for a checkbox should be \\\"on\\\"\\n\\tsupport.checkOn = input.value !== \\\"\\\";\\n\\n\\t// Support: IE <=11 only\\n\\t// Must access selectedIndex to make default options select\\n\\tsupport.optSelected = opt.selected;\\n\\n\\t// Support: IE <=11 only\\n\\t// An input loses its value after becoming a radio\\n\\tinput = document.createElement( \\\"input\\\" );\\n\\tinput.value = \\\"t\\\";\\n\\tinput.type = \\\"radio\\\";\\n\\tsupport.radioValue = input.value === \\\"t\\\";\\n} )();\\n\\n\\nvar boolHook,\\n\\tattrHandle = jQuery.expr.attrHandle;\\n\\njQuery.fn.extend( {\\n\\tattr: function( name, value ) {\\n\\t\\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\\n\\t},\\n\\n\\tremoveAttr: function( name ) {\\n\\t\\treturn this.each( function() {\\n\\t\\t\\tjQuery.removeAttr( this, name );\\n\\t\\t} );\\n\\t}\\n} );\\n\\njQuery.extend( {\\n\\tattr: function( elem, name, value ) {\\n\\t\\tvar ret, hooks,\\n\\t\\t\\tnType = elem.nodeType;\\n\\n\\t\\t// Don't get/set attributes on text, comment and attribute nodes\\n\\t\\tif ( nType === 3 || nType === 8 || nType === 2 ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\t// Fallback to prop when attributes are not supported\\n\\t\\tif ( typeof elem.getAttribute === \\\"undefined\\\" ) {\\n\\t\\t\\treturn jQuery.prop( elem, name, value );\\n\\t\\t}\\n\\n\\t\\t// Attribute hooks are determined by the lowercase version\\n\\t\\t// Grab necessary hook if one is defined\\n\\t\\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\\n\\t\\t\\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\\n\\t\\t\\t\\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\\n\\t\\t}\\n\\n\\t\\tif ( value !== undefined ) {\\n\\t\\t\\tif ( value === null ) {\\n\\t\\t\\t\\tjQuery.removeAttr( elem, name );\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( hooks && \\\"set\\\" in hooks &&\\n\\t\\t\\t\\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\\n\\t\\t\\t\\treturn ret;\\n\\t\\t\\t}\\n\\n\\t\\t\\telem.setAttribute( name, value + \\\"\\\" );\\n\\t\\t\\treturn value;\\n\\t\\t}\\n\\n\\t\\tif ( hooks && \\\"get\\\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\\n\\t\\t\\treturn ret;\\n\\t\\t}\\n\\n\\t\\tret = jQuery.find.attr( elem, name );\\n\\n\\t\\t// Non-existent attributes return null, we normalize to undefined\\n\\t\\treturn ret == null ? undefined : ret;\\n\\t},\\n\\n\\tattrHooks: {\\n\\t\\ttype: {\\n\\t\\t\\tset: function( elem, value ) {\\n\\t\\t\\t\\tif ( !support.radioValue && value === \\\"radio\\\" &&\\n\\t\\t\\t\\t\\tnodeName( elem, \\\"input\\\" ) ) {\\n\\t\\t\\t\\t\\tvar val = elem.value;\\n\\t\\t\\t\\t\\telem.setAttribute( \\\"type\\\", value );\\n\\t\\t\\t\\t\\tif ( val ) {\\n\\t\\t\\t\\t\\t\\telem.value = val;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\treturn value;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t},\\n\\n\\tremoveAttr: function( elem, value ) {\\n\\t\\tvar name,\\n\\t\\t\\ti = 0,\\n\\n\\t\\t\\t// Attribute names can contain non-HTML whitespace characters\\n\\t\\t\\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\\n\\t\\t\\tattrNames = value && value.match( rnothtmlwhite );\\n\\n\\t\\tif ( attrNames && elem.nodeType === 1 ) {\\n\\t\\t\\twhile ( ( name = attrNames[ i++ ] ) ) {\\n\\t\\t\\t\\telem.removeAttribute( name );\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n} );\\n\\n// Hooks for boolean attributes\\nboolHook = {\\n\\tset: function( elem, value, name ) {\\n\\t\\tif ( value === false ) {\\n\\n\\t\\t\\t// Remove boolean attributes when set to false\\n\\t\\t\\tjQuery.removeAttr( elem, name );\\n\\t\\t} else {\\n\\t\\t\\telem.setAttribute( name, name );\\n\\t\\t}\\n\\t\\treturn name;\\n\\t}\\n};\\n\\njQuery.each( jQuery.expr.match.bool.source.match( /\\\\w+/g ), function( _i, name ) {\\n\\tvar getter = attrHandle[ name ] || jQuery.find.attr;\\n\\n\\tattrHandle[ name ] = function( elem, name, isXML ) {\\n\\t\\tvar ret, handle,\\n\\t\\t\\tlowercaseName = name.toLowerCase();\\n\\n\\t\\tif ( !isXML ) {\\n\\n\\t\\t\\t// Avoid an infinite loop by temporarily removing this function from the getter\\n\\t\\t\\thandle = attrHandle[ lowercaseName ];\\n\\t\\t\\tattrHandle[ lowercaseName ] = ret;\\n\\t\\t\\tret = getter( elem, name, isXML ) != null ?\\n\\t\\t\\t\\tlowercaseName :\\n\\t\\t\\t\\tnull;\\n\\t\\t\\tattrHandle[ lowercaseName ] = handle;\\n\\t\\t}\\n\\t\\treturn ret;\\n\\t};\\n} );\\n\\n\\n\\n\\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\\n\\trclickable = /^(?:a|area)$/i;\\n\\njQuery.fn.extend( {\\n\\tprop: function( name, value ) {\\n\\t\\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\\n\\t},\\n\\n\\tremoveProp: function( name ) {\\n\\t\\treturn this.each( function() {\\n\\t\\t\\tdelete this[ jQuery.propFix[ name ] || name ];\\n\\t\\t} );\\n\\t}\\n} );\\n\\njQuery.extend( {\\n\\tprop: function( elem, name, value ) {\\n\\t\\tvar ret, hooks,\\n\\t\\t\\tnType = elem.nodeType;\\n\\n\\t\\t// Don't get/set properties on text, comment and attribute nodes\\n\\t\\tif ( nType === 3 || nType === 8 || nType === 2 ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\\n\\n\\t\\t\\t// Fix name and attach hooks\\n\\t\\t\\tname = jQuery.propFix[ name ] || name;\\n\\t\\t\\thooks = jQuery.propHooks[ name ];\\n\\t\\t}\\n\\n\\t\\tif ( value !== undefined ) {\\n\\t\\t\\tif ( hooks && \\\"set\\\" in hooks &&\\n\\t\\t\\t\\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\\n\\t\\t\\t\\treturn ret;\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn ( elem[ name ] = value );\\n\\t\\t}\\n\\n\\t\\tif ( hooks && \\\"get\\\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\\n\\t\\t\\treturn ret;\\n\\t\\t}\\n\\n\\t\\treturn elem[ name ];\\n\\t},\\n\\n\\tpropHooks: {\\n\\t\\ttabIndex: {\\n\\t\\t\\tget: function( elem ) {\\n\\n\\t\\t\\t\\t// Support: IE <=9 - 11 only\\n\\t\\t\\t\\t// elem.tabIndex doesn't always return the\\n\\t\\t\\t\\t// correct value when it hasn't been explicitly set\\n\\t\\t\\t\\t// Use proper attribute retrieval (trac-12072)\\n\\t\\t\\t\\tvar tabindex = jQuery.find.attr( elem, \\\"tabindex\\\" );\\n\\n\\t\\t\\t\\tif ( tabindex ) {\\n\\t\\t\\t\\t\\treturn parseInt( tabindex, 10 );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif (\\n\\t\\t\\t\\t\\trfocusable.test( elem.nodeName ) ||\\n\\t\\t\\t\\t\\trclickable.test( elem.nodeName ) &&\\n\\t\\t\\t\\t\\telem.href\\n\\t\\t\\t\\t) {\\n\\t\\t\\t\\t\\treturn 0;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn -1;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t},\\n\\n\\tpropFix: {\\n\\t\\t\\\"for\\\": \\\"htmlFor\\\",\\n\\t\\t\\\"class\\\": \\\"className\\\"\\n\\t}\\n} );\\n\\n// Support: IE <=11 only\\n// Accessing the selectedIndex property\\n// forces the browser to respect setting selected\\n// on the option\\n// The getter ensures a default option is selected\\n// when in an optgroup\\n// eslint rule \\\"no-unused-expressions\\\" is disabled for this code\\n// since it considers such accessions noop\\nif ( !support.optSelected ) {\\n\\tjQuery.propHooks.selected = {\\n\\t\\tget: function( elem ) {\\n\\n\\t\\t\\t/* eslint no-unused-expressions: \\\"off\\\" */\\n\\n\\t\\t\\tvar parent = elem.parentNode;\\n\\t\\t\\tif ( parent && parent.parentNode ) {\\n\\t\\t\\t\\tparent.parentNode.selectedIndex;\\n\\t\\t\\t}\\n\\t\\t\\treturn null;\\n\\t\\t},\\n\\t\\tset: function( elem ) {\\n\\n\\t\\t\\t/* eslint no-unused-expressions: \\\"off\\\" */\\n\\n\\t\\t\\tvar parent = elem.parentNode;\\n\\t\\t\\tif ( parent ) {\\n\\t\\t\\t\\tparent.selectedIndex;\\n\\n\\t\\t\\t\\tif ( parent.parentNode ) {\\n\\t\\t\\t\\t\\tparent.parentNode.selectedIndex;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t};\\n}\\n\\njQuery.each( [\\n\\t\\\"tabIndex\\\",\\n\\t\\\"readOnly\\\",\\n\\t\\\"maxLength\\\",\\n\\t\\\"cellSpacing\\\",\\n\\t\\\"cellPadding\\\",\\n\\t\\\"rowSpan\\\",\\n\\t\\\"colSpan\\\",\\n\\t\\\"useMap\\\",\\n\\t\\\"frameBorder\\\",\\n\\t\\\"contentEditable\\\"\\n], function() {\\n\\tjQuery.propFix[ this.toLowerCase() ] = this;\\n} );\\n\\n\\n\\n\\n\\t// Strip and collapse whitespace according to HTML spec\\n\\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\\n\\tfunction stripAndCollapse( value ) {\\n\\t\\tvar tokens = value.match( rnothtmlwhite ) || [];\\n\\t\\treturn tokens.join( \\\" \\\" );\\n\\t}\\n\\n\\nfunction getClass( elem ) {\\n\\treturn elem.getAttribute && elem.getAttribute( \\\"class\\\" ) || \\\"\\\";\\n}\\n\\nfunction classesToArray( value ) {\\n\\tif ( Array.isArray( value ) ) {\\n\\t\\treturn value;\\n\\t}\\n\\tif ( typeof value === \\\"string\\\" ) {\\n\\t\\treturn value.match( rnothtmlwhite ) || [];\\n\\t}\\n\\treturn [];\\n}\\n\\njQuery.fn.extend( {\\n\\taddClass: function( value ) {\\n\\t\\tvar classNames, cur, curValue, className, i, finalValue;\\n\\n\\t\\tif ( isFunction( value ) ) {\\n\\t\\t\\treturn this.each( function( j ) {\\n\\t\\t\\t\\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\\n\\t\\t\\t} );\\n\\t\\t}\\n\\n\\t\\tclassNames = classesToArray( value );\\n\\n\\t\\tif ( classNames.length ) {\\n\\t\\t\\treturn this.each( function() {\\n\\t\\t\\t\\tcurValue = getClass( this );\\n\\t\\t\\t\\tcur = this.nodeType === 1 && ( \\\" \\\" + stripAndCollapse( curValue ) + \\\" \\\" );\\n\\n\\t\\t\\t\\tif ( cur ) {\\n\\t\\t\\t\\t\\tfor ( i = 0; i < classNames.length; i++ ) {\\n\\t\\t\\t\\t\\t\\tclassName = classNames[ i ];\\n\\t\\t\\t\\t\\t\\tif ( cur.indexOf( \\\" \\\" + className + \\\" \\\" ) < 0 ) {\\n\\t\\t\\t\\t\\t\\t\\tcur += className + \\\" \\\";\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Only assign if different to avoid unneeded rendering.\\n\\t\\t\\t\\t\\tfinalValue = stripAndCollapse( cur );\\n\\t\\t\\t\\t\\tif ( curValue !== finalValue ) {\\n\\t\\t\\t\\t\\t\\tthis.setAttribute( \\\"class\\\", finalValue );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t} );\\n\\t\\t}\\n\\n\\t\\treturn this;\\n\\t},\\n\\n\\tremoveClass: function( value ) {\\n\\t\\tvar classNames, cur, curValue, className, i, finalValue;\\n\\n\\t\\tif ( isFunction( value ) ) {\\n\\t\\t\\treturn this.each( function( j ) {\\n\\t\\t\\t\\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\\n\\t\\t\\t} );\\n\\t\\t}\\n\\n\\t\\tif ( !arguments.length ) {\\n\\t\\t\\treturn this.attr( \\\"class\\\", \\\"\\\" );\\n\\t\\t}\\n\\n\\t\\tclassNames = classesToArray( value );\\n\\n\\t\\tif ( classNames.length ) {\\n\\t\\t\\treturn this.each( function() {\\n\\t\\t\\t\\tcurValue = getClass( this );\\n\\n\\t\\t\\t\\t// This expression is here for better compressibility (see addClass)\\n\\t\\t\\t\\tcur = this.nodeType === 1 && ( \\\" \\\" + stripAndCollapse( curValue ) + \\\" \\\" );\\n\\n\\t\\t\\t\\tif ( cur ) {\\n\\t\\t\\t\\t\\tfor ( i = 0; i < classNames.length; i++ ) {\\n\\t\\t\\t\\t\\t\\tclassName = classNames[ i ];\\n\\n\\t\\t\\t\\t\\t\\t// Remove *all* instances\\n\\t\\t\\t\\t\\t\\twhile ( cur.indexOf( \\\" \\\" + className + \\\" \\\" ) > -1 ) {\\n\\t\\t\\t\\t\\t\\t\\tcur = cur.replace( \\\" \\\" + className + \\\" \\\", \\\" \\\" );\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Only assign if different to avoid unneeded rendering.\\n\\t\\t\\t\\t\\tfinalValue = stripAndCollapse( cur );\\n\\t\\t\\t\\t\\tif ( curValue !== finalValue ) {\\n\\t\\t\\t\\t\\t\\tthis.setAttribute( \\\"class\\\", finalValue );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t} );\\n\\t\\t}\\n\\n\\t\\treturn this;\\n\\t},\\n\\n\\ttoggleClass: function( value, stateVal ) {\\n\\t\\tvar classNames, className, i, self,\\n\\t\\t\\ttype = typeof value,\\n\\t\\t\\tisValidValue = type === \\\"string\\\" || Array.isArray( value );\\n\\n\\t\\tif ( isFunction( value ) ) {\\n\\t\\t\\treturn this.each( function( i ) {\\n\\t\\t\\t\\tjQuery( this ).toggleClass(\\n\\t\\t\\t\\t\\tvalue.call( this, i, getClass( this ), stateVal ),\\n\\t\\t\\t\\t\\tstateVal\\n\\t\\t\\t\\t);\\n\\t\\t\\t} );\\n\\t\\t}\\n\\n\\t\\tif ( typeof stateVal === \\\"boolean\\\" && isValidValue ) {\\n\\t\\t\\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\\n\\t\\t}\\n\\n\\t\\tclassNames = classesToArray( value );\\n\\n\\t\\treturn this.each( function() {\\n\\t\\t\\tif ( isValidValue ) {\\n\\n\\t\\t\\t\\t// Toggle individual class names\\n\\t\\t\\t\\tself = jQuery( this );\\n\\n\\t\\t\\t\\tfor ( i = 0; i < classNames.length; i++ ) {\\n\\t\\t\\t\\t\\tclassName = classNames[ i ];\\n\\n\\t\\t\\t\\t\\t// Check each className given, space separated list\\n\\t\\t\\t\\t\\tif ( self.hasClass( className ) ) {\\n\\t\\t\\t\\t\\t\\tself.removeClass( className );\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\tself.addClass( className );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t// Toggle whole class name\\n\\t\\t\\t} else if ( value === undefined || type === \\\"boolean\\\" ) {\\n\\t\\t\\t\\tclassName = getClass( this );\\n\\t\\t\\t\\tif ( className ) {\\n\\n\\t\\t\\t\\t\\t// Store className if set\\n\\t\\t\\t\\t\\tdataPriv.set( this, \\\"__className__\\\", className );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// If the element has a class name or if we're passed `false`,\\n\\t\\t\\t\\t// then remove the whole classname (if there was one, the above saved it).\\n\\t\\t\\t\\t// Otherwise bring back whatever was previously saved (if anything),\\n\\t\\t\\t\\t// falling back to the empty string if nothing was stored.\\n\\t\\t\\t\\tif ( this.setAttribute ) {\\n\\t\\t\\t\\t\\tthis.setAttribute( \\\"class\\\",\\n\\t\\t\\t\\t\\t\\tclassName || value === false ?\\n\\t\\t\\t\\t\\t\\t\\t\\\"\\\" :\\n\\t\\t\\t\\t\\t\\t\\tdataPriv.get( this, \\\"__className__\\\" ) || \\\"\\\"\\n\\t\\t\\t\\t\\t);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t},\\n\\n\\thasClass: function( selector ) {\\n\\t\\tvar className, elem,\\n\\t\\t\\ti = 0;\\n\\n\\t\\tclassName = \\\" \\\" + selector + \\\" \\\";\\n\\t\\twhile ( ( elem = this[ i++ ] ) ) {\\n\\t\\t\\tif ( elem.nodeType === 1 &&\\n\\t\\t\\t\\t( \\\" \\\" + stripAndCollapse( getClass( elem ) ) + \\\" \\\" ).indexOf( className ) > -1 ) {\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn false;\\n\\t}\\n} );\\n\\n\\n\\n\\nvar rreturn = /\\\\r/g;\\n\\njQuery.fn.extend( {\\n\\tval: function( value ) {\\n\\t\\tvar hooks, ret, valueIsFunction,\\n\\t\\t\\telem = this[ 0 ];\\n\\n\\t\\tif ( !arguments.length ) {\\n\\t\\t\\tif ( elem ) {\\n\\t\\t\\t\\thooks = jQuery.valHooks[ elem.type ] ||\\n\\t\\t\\t\\t\\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\\n\\n\\t\\t\\t\\tif ( hooks &&\\n\\t\\t\\t\\t\\t\\\"get\\\" in hooks &&\\n\\t\\t\\t\\t\\t( ret = hooks.get( elem, \\\"value\\\" ) ) !== undefined\\n\\t\\t\\t\\t) {\\n\\t\\t\\t\\t\\treturn ret;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tret = elem.value;\\n\\n\\t\\t\\t\\t// Handle most common string cases\\n\\t\\t\\t\\tif ( typeof ret === \\\"string\\\" ) {\\n\\t\\t\\t\\t\\treturn ret.replace( rreturn, \\\"\\\" );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Handle cases where value is null/undef or number\\n\\t\\t\\t\\treturn ret == null ? \\\"\\\" : ret;\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\tvalueIsFunction = isFunction( value );\\n\\n\\t\\treturn this.each( function( i ) {\\n\\t\\t\\tvar val;\\n\\n\\t\\t\\tif ( this.nodeType !== 1 ) {\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( valueIsFunction ) {\\n\\t\\t\\t\\tval = value.call( this, i, jQuery( this ).val() );\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tval = value;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Treat null/undefined as \\\"\\\"; convert numbers to string\\n\\t\\t\\tif ( val == null ) {\\n\\t\\t\\t\\tval = \\\"\\\";\\n\\n\\t\\t\\t} else if ( typeof val === \\\"number\\\" ) {\\n\\t\\t\\t\\tval += \\\"\\\";\\n\\n\\t\\t\\t} else if ( Array.isArray( val ) ) {\\n\\t\\t\\t\\tval = jQuery.map( val, function( value ) {\\n\\t\\t\\t\\t\\treturn value == null ? \\\"\\\" : value + \\\"\\\";\\n\\t\\t\\t\\t} );\\n\\t\\t\\t}\\n\\n\\t\\t\\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\\n\\n\\t\\t\\t// If set returns undefined, fall back to normal setting\\n\\t\\t\\tif ( !hooks || !( \\\"set\\\" in hooks ) || hooks.set( this, val, \\\"value\\\" ) === undefined ) {\\n\\t\\t\\t\\tthis.value = val;\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t}\\n} );\\n\\njQuery.extend( {\\n\\tvalHooks: {\\n\\t\\toption: {\\n\\t\\t\\tget: function( elem ) {\\n\\n\\t\\t\\t\\tvar val = jQuery.find.attr( elem, \\\"value\\\" );\\n\\t\\t\\t\\treturn val != null ?\\n\\t\\t\\t\\t\\tval :\\n\\n\\t\\t\\t\\t\\t// Support: IE <=10 - 11 only\\n\\t\\t\\t\\t\\t// option.text throws exceptions (trac-14686, trac-14858)\\n\\t\\t\\t\\t\\t// Strip and collapse whitespace\\n\\t\\t\\t\\t\\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\\n\\t\\t\\t\\t\\tstripAndCollapse( jQuery.text( elem ) );\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tselect: {\\n\\t\\t\\tget: function( elem ) {\\n\\t\\t\\t\\tvar value, option, i,\\n\\t\\t\\t\\t\\toptions = elem.options,\\n\\t\\t\\t\\t\\tindex = elem.selectedIndex,\\n\\t\\t\\t\\t\\tone = elem.type === \\\"select-one\\\",\\n\\t\\t\\t\\t\\tvalues = one ? null : [],\\n\\t\\t\\t\\t\\tmax = one ? index + 1 : options.length;\\n\\n\\t\\t\\t\\tif ( index < 0 ) {\\n\\t\\t\\t\\t\\ti = max;\\n\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\ti = one ? index : 0;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Loop through all the selected options\\n\\t\\t\\t\\tfor ( ; i < max; i++ ) {\\n\\t\\t\\t\\t\\toption = options[ i ];\\n\\n\\t\\t\\t\\t\\t// Support: IE <=9 only\\n\\t\\t\\t\\t\\t// IE8-9 doesn't update selected after form reset (trac-2551)\\n\\t\\t\\t\\t\\tif ( ( option.selected || i === index ) &&\\n\\n\\t\\t\\t\\t\\t\\t\\t// Don't return options that are disabled or in a disabled optgroup\\n\\t\\t\\t\\t\\t\\t\\t!option.disabled &&\\n\\t\\t\\t\\t\\t\\t\\t( !option.parentNode.disabled ||\\n\\t\\t\\t\\t\\t\\t\\t\\t!nodeName( option.parentNode, \\\"optgroup\\\" ) ) ) {\\n\\n\\t\\t\\t\\t\\t\\t// Get the specific value for the option\\n\\t\\t\\t\\t\\t\\tvalue = jQuery( option ).val();\\n\\n\\t\\t\\t\\t\\t\\t// We don't need an array for one selects\\n\\t\\t\\t\\t\\t\\tif ( one ) {\\n\\t\\t\\t\\t\\t\\t\\treturn value;\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t// Multi-Selects return an array\\n\\t\\t\\t\\t\\t\\tvalues.push( value );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn values;\\n\\t\\t\\t},\\n\\n\\t\\t\\tset: function( elem, value ) {\\n\\t\\t\\t\\tvar optionSet, option,\\n\\t\\t\\t\\t\\toptions = elem.options,\\n\\t\\t\\t\\t\\tvalues = jQuery.makeArray( value ),\\n\\t\\t\\t\\t\\ti = options.length;\\n\\n\\t\\t\\t\\twhile ( i-- ) {\\n\\t\\t\\t\\t\\toption = options[ i ];\\n\\n\\t\\t\\t\\t\\t/* eslint-disable no-cond-assign */\\n\\n\\t\\t\\t\\t\\tif ( option.selected =\\n\\t\\t\\t\\t\\t\\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\\n\\t\\t\\t\\t\\t) {\\n\\t\\t\\t\\t\\t\\toptionSet = true;\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t/* eslint-enable no-cond-assign */\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Force browsers to behave consistently when non-matching value is set\\n\\t\\t\\t\\tif ( !optionSet ) {\\n\\t\\t\\t\\t\\telem.selectedIndex = -1;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn values;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n} );\\n\\n// Radios and checkboxes getter/setter\\njQuery.each( [ \\\"radio\\\", \\\"checkbox\\\" ], function() {\\n\\tjQuery.valHooks[ this ] = {\\n\\t\\tset: function( elem, value ) {\\n\\t\\t\\tif ( Array.isArray( value ) ) {\\n\\t\\t\\t\\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\\n\\t\\t\\t}\\n\\t\\t}\\n\\t};\\n\\tif ( !support.checkOn ) {\\n\\t\\tjQuery.valHooks[ this ].get = function( elem ) {\\n\\t\\t\\treturn elem.getAttribute( \\\"value\\\" ) === null ? \\\"on\\\" : elem.value;\\n\\t\\t};\\n\\t}\\n} );\\n\\n\\n\\n\\n// Return jQuery for attributes-only inclusion\\nvar location = window.location;\\n\\nvar nonce = { guid: Date.now() };\\n\\nvar rquery = ( /\\\\?/ );\\n\\n\\n\\n// Cross-browser xml parsing\\njQuery.parseXML = function( data ) {\\n\\tvar xml, parserErrorElem;\\n\\tif ( !data || typeof data !== \\\"string\\\" ) {\\n\\t\\treturn null;\\n\\t}\\n\\n\\t// Support: IE 9 - 11 only\\n\\t// IE throws on parseFromString with invalid input.\\n\\ttry {\\n\\t\\txml = ( new window.DOMParser() ).parseFromString( data, \\\"text/xml\\\" );\\n\\t} catch ( e ) {}\\n\\n\\tparserErrorElem = xml && xml.getElementsByTagName( \\\"parsererror\\\" )[ 0 ];\\n\\tif ( !xml || parserErrorElem ) {\\n\\t\\tjQuery.error( \\\"Invalid XML: \\\" + (\\n\\t\\t\\tparserErrorElem ?\\n\\t\\t\\t\\tjQuery.map( parserErrorElem.childNodes, function( el ) {\\n\\t\\t\\t\\t\\treturn el.textContent;\\n\\t\\t\\t\\t} ).join( \\\"\\\\n\\\" ) :\\n\\t\\t\\t\\tdata\\n\\t\\t) );\\n\\t}\\n\\treturn xml;\\n};\\n\\n\\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\\n\\tstopPropagationCallback = function( e ) {\\n\\t\\te.stopPropagation();\\n\\t};\\n\\njQuery.extend( jQuery.event, {\\n\\n\\ttrigger: function( event, data, elem, onlyHandlers ) {\\n\\n\\t\\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\\n\\t\\t\\teventPath = [ elem || document ],\\n\\t\\t\\ttype = hasOwn.call( event, \\\"type\\\" ) ? event.type : event,\\n\\t\\t\\tnamespaces = hasOwn.call( event, \\\"namespace\\\" ) ? event.namespace.split( \\\".\\\" ) : [];\\n\\n\\t\\tcur = lastElement = tmp = elem = elem || document;\\n\\n\\t\\t// Don't do events on text and comment nodes\\n\\t\\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\\n\\t\\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\tif ( type.indexOf( \\\".\\\" ) > -1 ) {\\n\\n\\t\\t\\t// Namespaced trigger; create a regexp to match event type in handle()\\n\\t\\t\\tnamespaces = type.split( \\\".\\\" );\\n\\t\\t\\ttype = namespaces.shift();\\n\\t\\t\\tnamespaces.sort();\\n\\t\\t}\\n\\t\\tontype = type.indexOf( \\\":\\\" ) < 0 && \\\"on\\\" + type;\\n\\n\\t\\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\\n\\t\\tevent = event[ jQuery.expando ] ?\\n\\t\\t\\tevent :\\n\\t\\t\\tnew jQuery.Event( type, typeof event === \\\"object\\\" && event );\\n\\n\\t\\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\\n\\t\\tevent.isTrigger = onlyHandlers ? 2 : 3;\\n\\t\\tevent.namespace = namespaces.join( \\\".\\\" );\\n\\t\\tevent.rnamespace = event.namespace ?\\n\\t\\t\\tnew RegExp( \\\"(^|\\\\\\\\.)\\\" + namespaces.join( \\\"\\\\\\\\.(?:.*\\\\\\\\.|)\\\" ) + \\\"(\\\\\\\\.|$)\\\" ) :\\n\\t\\t\\tnull;\\n\\n\\t\\t// Clean up the event in case it is being reused\\n\\t\\tevent.result = undefined;\\n\\t\\tif ( !event.target ) {\\n\\t\\t\\tevent.target = elem;\\n\\t\\t}\\n\\n\\t\\t// Clone any incoming data and prepend the event, creating the handler arg list\\n\\t\\tdata = data == null ?\\n\\t\\t\\t[ event ] :\\n\\t\\t\\tjQuery.makeArray( data, [ event ] );\\n\\n\\t\\t// Allow special events to draw outside the lines\\n\\t\\tspecial = jQuery.event.special[ type ] || {};\\n\\t\\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\\n\\t\\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\\n\\t\\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\\n\\n\\t\\t\\tbubbleType = special.delegateType || type;\\n\\t\\t\\tif ( !rfocusMorph.test( bubbleType + type ) ) {\\n\\t\\t\\t\\tcur = cur.parentNode;\\n\\t\\t\\t}\\n\\t\\t\\tfor ( ; cur; cur = cur.parentNode ) {\\n\\t\\t\\t\\teventPath.push( cur );\\n\\t\\t\\t\\ttmp = cur;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\\n\\t\\t\\tif ( tmp === ( elem.ownerDocument || document ) ) {\\n\\t\\t\\t\\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Fire handlers on the event path\\n\\t\\ti = 0;\\n\\t\\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\\n\\t\\t\\tlastElement = cur;\\n\\t\\t\\tevent.type = i > 1 ?\\n\\t\\t\\t\\tbubbleType :\\n\\t\\t\\t\\tspecial.bindType || type;\\n\\n\\t\\t\\t// jQuery handler\\n\\t\\t\\thandle = ( dataPriv.get( cur, \\\"events\\\" ) || Object.create( null ) )[ event.type ] &&\\n\\t\\t\\t\\tdataPriv.get( cur, \\\"handle\\\" );\\n\\t\\t\\tif ( handle ) {\\n\\t\\t\\t\\thandle.apply( cur, data );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Native handler\\n\\t\\t\\thandle = ontype && cur[ ontype ];\\n\\t\\t\\tif ( handle && handle.apply && acceptData( cur ) ) {\\n\\t\\t\\t\\tevent.result = handle.apply( cur, data );\\n\\t\\t\\t\\tif ( event.result === false ) {\\n\\t\\t\\t\\t\\tevent.preventDefault();\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tevent.type = type;\\n\\n\\t\\t// If nobody prevented the default action, do it now\\n\\t\\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\\n\\n\\t\\t\\tif ( ( !special._default ||\\n\\t\\t\\t\\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\\n\\t\\t\\t\\tacceptData( elem ) ) {\\n\\n\\t\\t\\t\\t// Call a native DOM method on the target with the same name as the event.\\n\\t\\t\\t\\t// Don't do default actions on window, that's where global variables be (trac-6170)\\n\\t\\t\\t\\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\\n\\n\\t\\t\\t\\t\\t// Don't re-trigger an onFOO event when we call its FOO() method\\n\\t\\t\\t\\t\\ttmp = elem[ ontype ];\\n\\n\\t\\t\\t\\t\\tif ( tmp ) {\\n\\t\\t\\t\\t\\t\\telem[ ontype ] = null;\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Prevent re-triggering of the same event, since we already bubbled it above\\n\\t\\t\\t\\t\\tjQuery.event.triggered = type;\\n\\n\\t\\t\\t\\t\\tif ( event.isPropagationStopped() ) {\\n\\t\\t\\t\\t\\t\\tlastElement.addEventListener( type, stopPropagationCallback );\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\telem[ type ]();\\n\\n\\t\\t\\t\\t\\tif ( event.isPropagationStopped() ) {\\n\\t\\t\\t\\t\\t\\tlastElement.removeEventListener( type, stopPropagationCallback );\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tjQuery.event.triggered = undefined;\\n\\n\\t\\t\\t\\t\\tif ( tmp ) {\\n\\t\\t\\t\\t\\t\\telem[ ontype ] = tmp;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn event.result;\\n\\t},\\n\\n\\t// Piggyback on a donor event to simulate a different one\\n\\t// Used only for `focus(in | out)` events\\n\\tsimulate: function( type, elem, event ) {\\n\\t\\tvar e = jQuery.extend(\\n\\t\\t\\tnew jQuery.Event(),\\n\\t\\t\\tevent,\\n\\t\\t\\t{\\n\\t\\t\\t\\ttype: type,\\n\\t\\t\\t\\tisSimulated: true\\n\\t\\t\\t}\\n\\t\\t);\\n\\n\\t\\tjQuery.event.trigger( e, null, elem );\\n\\t}\\n\\n} );\\n\\njQuery.fn.extend( {\\n\\n\\ttrigger: function( type, data ) {\\n\\t\\treturn this.each( function() {\\n\\t\\t\\tjQuery.event.trigger( type, data, this );\\n\\t\\t} );\\n\\t},\\n\\ttriggerHandler: function( type, data ) {\\n\\t\\tvar elem = this[ 0 ];\\n\\t\\tif ( elem ) {\\n\\t\\t\\treturn jQuery.event.trigger( type, data, elem, true );\\n\\t\\t}\\n\\t}\\n} );\\n\\n\\nvar\\n\\trbracket = /\\\\[\\\\]$/,\\n\\trCRLF = /\\\\r?\\\\n/g,\\n\\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\\n\\trsubmittable = /^(?:input|select|textarea|keygen)/i;\\n\\nfunction buildParams( prefix, obj, traditional, add ) {\\n\\tvar name;\\n\\n\\tif ( Array.isArray( obj ) ) {\\n\\n\\t\\t// Serialize array item.\\n\\t\\tjQuery.each( obj, function( i, v ) {\\n\\t\\t\\tif ( traditional || rbracket.test( prefix ) ) {\\n\\n\\t\\t\\t\\t// Treat each array item as a scalar.\\n\\t\\t\\t\\tadd( prefix, v );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// Item is non-scalar (array or object), encode its numeric index.\\n\\t\\t\\t\\tbuildParams(\\n\\t\\t\\t\\t\\tprefix + \\\"[\\\" + ( typeof v === \\\"object\\\" && v != null ? i : \\\"\\\" ) + \\\"]\\\",\\n\\t\\t\\t\\t\\tv,\\n\\t\\t\\t\\t\\ttraditional,\\n\\t\\t\\t\\t\\tadd\\n\\t\\t\\t\\t);\\n\\t\\t\\t}\\n\\t\\t} );\\n\\n\\t} else if ( !traditional && toType( obj ) === \\\"object\\\" ) {\\n\\n\\t\\t// Serialize object item.\\n\\t\\tfor ( name in obj ) {\\n\\t\\t\\tbuildParams( prefix + \\\"[\\\" + name + \\\"]\\\", obj[ name ], traditional, add );\\n\\t\\t}\\n\\n\\t} else {\\n\\n\\t\\t// Serialize scalar item.\\n\\t\\tadd( prefix, obj );\\n\\t}\\n}\\n\\n// Serialize an array of form elements or a set of\\n// key/values into a query string\\njQuery.param = function( a, traditional ) {\\n\\tvar prefix,\\n\\t\\ts = [],\\n\\t\\tadd = function( key, valueOrFunction ) {\\n\\n\\t\\t\\t// If value is a function, invoke it and use its return value\\n\\t\\t\\tvar value = isFunction( valueOrFunction ) ?\\n\\t\\t\\t\\tvalueOrFunction() :\\n\\t\\t\\t\\tvalueOrFunction;\\n\\n\\t\\t\\ts[ s.length ] = encodeURIComponent( key ) + \\\"=\\\" +\\n\\t\\t\\t\\tencodeURIComponent( value == null ? \\\"\\\" : value );\\n\\t\\t};\\n\\n\\tif ( a == null ) {\\n\\t\\treturn \\\"\\\";\\n\\t}\\n\\n\\t// If an array was passed in, assume that it is an array of form elements.\\n\\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\\n\\n\\t\\t// Serialize the form elements\\n\\t\\tjQuery.each( a, function() {\\n\\t\\t\\tadd( this.name, this.value );\\n\\t\\t} );\\n\\n\\t} else {\\n\\n\\t\\t// If traditional, encode the \\\"old\\\" way (the way 1.3.2 or older\\n\\t\\t// did it), otherwise encode params recursively.\\n\\t\\tfor ( prefix in a ) {\\n\\t\\t\\tbuildParams( prefix, a[ prefix ], traditional, add );\\n\\t\\t}\\n\\t}\\n\\n\\t// Return the resulting serialization\\n\\treturn s.join( \\\"&\\\" );\\n};\\n\\njQuery.fn.extend( {\\n\\tserialize: function() {\\n\\t\\treturn jQuery.param( this.serializeArray() );\\n\\t},\\n\\tserializeArray: function() {\\n\\t\\treturn this.map( function() {\\n\\n\\t\\t\\t// Can add propHook for \\\"elements\\\" to filter or add form elements\\n\\t\\t\\tvar elements = jQuery.prop( this, \\\"elements\\\" );\\n\\t\\t\\treturn elements ? jQuery.makeArray( elements ) : this;\\n\\t\\t} ).filter( function() {\\n\\t\\t\\tvar type = this.type;\\n\\n\\t\\t\\t// Use .is( \\\":disabled\\\" ) so that fieldset[disabled] works\\n\\t\\t\\treturn this.name && !jQuery( this ).is( \\\":disabled\\\" ) &&\\n\\t\\t\\t\\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\\n\\t\\t\\t\\t( this.checked || !rcheckableType.test( type ) );\\n\\t\\t} ).map( function( _i, elem ) {\\n\\t\\t\\tvar val = jQuery( this ).val();\\n\\n\\t\\t\\tif ( val == null ) {\\n\\t\\t\\t\\treturn null;\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( Array.isArray( val ) ) {\\n\\t\\t\\t\\treturn jQuery.map( val, function( val ) {\\n\\t\\t\\t\\t\\treturn { name: elem.name, value: val.replace( rCRLF, \\\"\\\\r\\\\n\\\" ) };\\n\\t\\t\\t\\t} );\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn { name: elem.name, value: val.replace( rCRLF, \\\"\\\\r\\\\n\\\" ) };\\n\\t\\t} ).get();\\n\\t}\\n} );\\n\\n\\nvar\\n\\tr20 = /%20/g,\\n\\trhash = /#.*$/,\\n\\trantiCache = /([?&])_=[^&]*/,\\n\\trheaders = /^(.*?):[ \\\\t]*([^\\\\r\\\\n]*)$/mg,\\n\\n\\t// trac-7653, trac-8125, trac-8152: local protocol detection\\n\\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\\n\\trnoContent = /^(?:GET|HEAD)$/,\\n\\trprotocol = /^\\\\/\\\\//,\\n\\n\\t/* Prefilters\\n\\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\\n\\t * 2) These are called:\\n\\t * - BEFORE asking for a transport\\n\\t * - AFTER param serialization (s.data is a string if s.processData is true)\\n\\t * 3) key is the dataType\\n\\t * 4) the catchall symbol \\\"*\\\" can be used\\n\\t * 5) execution will start with transport dataType and THEN continue down to \\\"*\\\" if needed\\n\\t */\\n\\tprefilters = {},\\n\\n\\t/* Transports bindings\\n\\t * 1) key is the dataType\\n\\t * 2) the catchall symbol \\\"*\\\" can be used\\n\\t * 3) selection will start with transport dataType and THEN go to \\\"*\\\" if needed\\n\\t */\\n\\ttransports = {},\\n\\n\\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\\n\\tallTypes = \\\"*/\\\".concat( \\\"*\\\" ),\\n\\n\\t// Anchor tag for parsing the document origin\\n\\toriginAnchor = document.createElement( \\\"a\\\" );\\n\\noriginAnchor.href = location.href;\\n\\n// Base \\\"constructor\\\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\\nfunction addToPrefiltersOrTransports( structure ) {\\n\\n\\t// dataTypeExpression is optional and defaults to \\\"*\\\"\\n\\treturn function( dataTypeExpression, func ) {\\n\\n\\t\\tif ( typeof dataTypeExpression !== \\\"string\\\" ) {\\n\\t\\t\\tfunc = dataTypeExpression;\\n\\t\\t\\tdataTypeExpression = \\\"*\\\";\\n\\t\\t}\\n\\n\\t\\tvar dataType,\\n\\t\\t\\ti = 0,\\n\\t\\t\\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\\n\\n\\t\\tif ( isFunction( func ) ) {\\n\\n\\t\\t\\t// For each dataType in the dataTypeExpression\\n\\t\\t\\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\\n\\n\\t\\t\\t\\t// Prepend if requested\\n\\t\\t\\t\\tif ( dataType[ 0 ] === \\\"+\\\" ) {\\n\\t\\t\\t\\t\\tdataType = dataType.slice( 1 ) || \\\"*\\\";\\n\\t\\t\\t\\t\\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\\n\\n\\t\\t\\t\\t// Otherwise append\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t};\\n}\\n\\n// Base inspection function for prefilters and transports\\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\\n\\n\\tvar inspected = {},\\n\\t\\tseekingTransport = ( structure === transports );\\n\\n\\tfunction inspect( dataType ) {\\n\\t\\tvar selected;\\n\\t\\tinspected[ dataType ] = true;\\n\\t\\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\\n\\t\\t\\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\\n\\t\\t\\tif ( typeof dataTypeOrTransport === \\\"string\\\" &&\\n\\t\\t\\t\\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\\n\\n\\t\\t\\t\\toptions.dataTypes.unshift( dataTypeOrTransport );\\n\\t\\t\\t\\tinspect( dataTypeOrTransport );\\n\\t\\t\\t\\treturn false;\\n\\t\\t\\t} else if ( seekingTransport ) {\\n\\t\\t\\t\\treturn !( selected = dataTypeOrTransport );\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t\\treturn selected;\\n\\t}\\n\\n\\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \\\"*\\\" ] && inspect( \\\"*\\\" );\\n}\\n\\n// A special extend for ajax options\\n// that takes \\\"flat\\\" options (not to be deep extended)\\n// Fixes trac-9887\\nfunction ajaxExtend( target, src ) {\\n\\tvar key, deep,\\n\\t\\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\\n\\n\\tfor ( key in src ) {\\n\\t\\tif ( src[ key ] !== undefined ) {\\n\\t\\t\\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\\n\\t\\t}\\n\\t}\\n\\tif ( deep ) {\\n\\t\\tjQuery.extend( true, target, deep );\\n\\t}\\n\\n\\treturn target;\\n}\\n\\n/* Handles responses to an ajax request:\\n * - finds the right dataType (mediates between content-type and expected dataType)\\n * - returns the corresponding response\\n */\\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\\n\\n\\tvar ct, type, finalDataType, firstDataType,\\n\\t\\tcontents = s.contents,\\n\\t\\tdataTypes = s.dataTypes;\\n\\n\\t// Remove auto dataType and get content-type in the process\\n\\twhile ( dataTypes[ 0 ] === \\\"*\\\" ) {\\n\\t\\tdataTypes.shift();\\n\\t\\tif ( ct === undefined ) {\\n\\t\\t\\tct = s.mimeType || jqXHR.getResponseHeader( \\\"Content-Type\\\" );\\n\\t\\t}\\n\\t}\\n\\n\\t// Check if we're dealing with a known content-type\\n\\tif ( ct ) {\\n\\t\\tfor ( type in contents ) {\\n\\t\\t\\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\\n\\t\\t\\t\\tdataTypes.unshift( type );\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// Check to see if we have a response for the expected dataType\\n\\tif ( dataTypes[ 0 ] in responses ) {\\n\\t\\tfinalDataType = dataTypes[ 0 ];\\n\\t} else {\\n\\n\\t\\t// Try convertible dataTypes\\n\\t\\tfor ( type in responses ) {\\n\\t\\t\\tif ( !dataTypes[ 0 ] || s.converters[ type + \\\" \\\" + dataTypes[ 0 ] ] ) {\\n\\t\\t\\t\\tfinalDataType = type;\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\t\\t\\tif ( !firstDataType ) {\\n\\t\\t\\t\\tfirstDataType = type;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Or just use first one\\n\\t\\tfinalDataType = finalDataType || firstDataType;\\n\\t}\\n\\n\\t// If we found a dataType\\n\\t// We add the dataType to the list if needed\\n\\t// and return the corresponding response\\n\\tif ( finalDataType ) {\\n\\t\\tif ( finalDataType !== dataTypes[ 0 ] ) {\\n\\t\\t\\tdataTypes.unshift( finalDataType );\\n\\t\\t}\\n\\t\\treturn responses[ finalDataType ];\\n\\t}\\n}\\n\\n/* Chain conversions given the request and the original response\\n * Also sets the responseXXX fields on the jqXHR instance\\n */\\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\\n\\tvar conv2, current, conv, tmp, prev,\\n\\t\\tconverters = {},\\n\\n\\t\\t// Work with a copy of dataTypes in case we need to modify it for conversion\\n\\t\\tdataTypes = s.dataTypes.slice();\\n\\n\\t// Create converters map with lowercased keys\\n\\tif ( dataTypes[ 1 ] ) {\\n\\t\\tfor ( conv in s.converters ) {\\n\\t\\t\\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\\n\\t\\t}\\n\\t}\\n\\n\\tcurrent = dataTypes.shift();\\n\\n\\t// Convert to each sequential dataType\\n\\twhile ( current ) {\\n\\n\\t\\tif ( s.responseFields[ current ] ) {\\n\\t\\t\\tjqXHR[ s.responseFields[ current ] ] = response;\\n\\t\\t}\\n\\n\\t\\t// Apply the dataFilter if provided\\n\\t\\tif ( !prev && isSuccess && s.dataFilter ) {\\n\\t\\t\\tresponse = s.dataFilter( response, s.dataType );\\n\\t\\t}\\n\\n\\t\\tprev = current;\\n\\t\\tcurrent = dataTypes.shift();\\n\\n\\t\\tif ( current ) {\\n\\n\\t\\t\\t// There's only work to do if current dataType is non-auto\\n\\t\\t\\tif ( current === \\\"*\\\" ) {\\n\\n\\t\\t\\t\\tcurrent = prev;\\n\\n\\t\\t\\t// Convert response if prev dataType is non-auto and differs from current\\n\\t\\t\\t} else if ( prev !== \\\"*\\\" && prev !== current ) {\\n\\n\\t\\t\\t\\t// Seek a direct converter\\n\\t\\t\\t\\tconv = converters[ prev + \\\" \\\" + current ] || converters[ \\\"* \\\" + current ];\\n\\n\\t\\t\\t\\t// If none found, seek a pair\\n\\t\\t\\t\\tif ( !conv ) {\\n\\t\\t\\t\\t\\tfor ( conv2 in converters ) {\\n\\n\\t\\t\\t\\t\\t\\t// If conv2 outputs current\\n\\t\\t\\t\\t\\t\\ttmp = conv2.split( \\\" \\\" );\\n\\t\\t\\t\\t\\t\\tif ( tmp[ 1 ] === current ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// If prev can be converted to accepted input\\n\\t\\t\\t\\t\\t\\t\\tconv = converters[ prev + \\\" \\\" + tmp[ 0 ] ] ||\\n\\t\\t\\t\\t\\t\\t\\t\\tconverters[ \\\"* \\\" + tmp[ 0 ] ];\\n\\t\\t\\t\\t\\t\\t\\tif ( conv ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// Condense equivalence converters\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( conv === true ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tconv = converters[ conv2 ];\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// Otherwise, insert the intermediate dataType\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( converters[ conv2 ] !== true ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcurrent = tmp[ 0 ];\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tdataTypes.unshift( tmp[ 1 ] );\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Apply converter (if not an equivalence)\\n\\t\\t\\t\\tif ( conv !== true ) {\\n\\n\\t\\t\\t\\t\\t// Unless errors are allowed to bubble, catch and return them\\n\\t\\t\\t\\t\\tif ( conv && s.throws ) {\\n\\t\\t\\t\\t\\t\\tresponse = conv( response );\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\t\\t\\tresponse = conv( response );\\n\\t\\t\\t\\t\\t\\t} catch ( e ) {\\n\\t\\t\\t\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\t\\t\\t\\tstate: \\\"parsererror\\\",\\n\\t\\t\\t\\t\\t\\t\\t\\terror: conv ? e : \\\"No conversion from \\\" + prev + \\\" to \\\" + current\\n\\t\\t\\t\\t\\t\\t\\t};\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\treturn { state: \\\"success\\\", data: response };\\n}\\n\\njQuery.extend( {\\n\\n\\t// Counter for holding the number of active queries\\n\\tactive: 0,\\n\\n\\t// Last-Modified header cache for next request\\n\\tlastModified: {},\\n\\tetag: {},\\n\\n\\tajaxSettings: {\\n\\t\\turl: location.href,\\n\\t\\ttype: \\\"GET\\\",\\n\\t\\tisLocal: rlocalProtocol.test( location.protocol ),\\n\\t\\tglobal: true,\\n\\t\\tprocessData: true,\\n\\t\\tasync: true,\\n\\t\\tcontentType: \\\"application/x-www-form-urlencoded; charset=UTF-8\\\",\\n\\n\\t\\t/*\\n\\t\\ttimeout: 0,\\n\\t\\tdata: null,\\n\\t\\tdataType: null,\\n\\t\\tusername: null,\\n\\t\\tpassword: null,\\n\\t\\tcache: null,\\n\\t\\tthrows: false,\\n\\t\\ttraditional: false,\\n\\t\\theaders: {},\\n\\t\\t*/\\n\\n\\t\\taccepts: {\\n\\t\\t\\t\\\"*\\\": allTypes,\\n\\t\\t\\ttext: \\\"text/plain\\\",\\n\\t\\t\\thtml: \\\"text/html\\\",\\n\\t\\t\\txml: \\\"application/xml, text/xml\\\",\\n\\t\\t\\tjson: \\\"application/json, text/javascript\\\"\\n\\t\\t},\\n\\n\\t\\tcontents: {\\n\\t\\t\\txml: /\\\\bxml\\\\b/,\\n\\t\\t\\thtml: /\\\\bhtml/,\\n\\t\\t\\tjson: /\\\\bjson\\\\b/\\n\\t\\t},\\n\\n\\t\\tresponseFields: {\\n\\t\\t\\txml: \\\"responseXML\\\",\\n\\t\\t\\ttext: \\\"responseText\\\",\\n\\t\\t\\tjson: \\\"responseJSON\\\"\\n\\t\\t},\\n\\n\\t\\t// Data converters\\n\\t\\t// Keys separate source (or catchall \\\"*\\\") and destination types with a single space\\n\\t\\tconverters: {\\n\\n\\t\\t\\t// Convert anything to text\\n\\t\\t\\t\\\"* text\\\": String,\\n\\n\\t\\t\\t// Text to html (true = no transformation)\\n\\t\\t\\t\\\"text html\\\": true,\\n\\n\\t\\t\\t// Evaluate text as a json expression\\n\\t\\t\\t\\\"text json\\\": JSON.parse,\\n\\n\\t\\t\\t// Parse text as xml\\n\\t\\t\\t\\\"text xml\\\": jQuery.parseXML\\n\\t\\t},\\n\\n\\t\\t// For options that shouldn't be deep extended:\\n\\t\\t// you can add your own custom options here if\\n\\t\\t// and when you create one that shouldn't be\\n\\t\\t// deep extended (see ajaxExtend)\\n\\t\\tflatOptions: {\\n\\t\\t\\turl: true,\\n\\t\\t\\tcontext: true\\n\\t\\t}\\n\\t},\\n\\n\\t// Creates a full fledged settings object into target\\n\\t// with both ajaxSettings and settings fields.\\n\\t// If target is omitted, writes into ajaxSettings.\\n\\tajaxSetup: function( target, settings ) {\\n\\t\\treturn settings ?\\n\\n\\t\\t\\t// Building a settings object\\n\\t\\t\\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\\n\\n\\t\\t\\t// Extending ajaxSettings\\n\\t\\t\\tajaxExtend( jQuery.ajaxSettings, target );\\n\\t},\\n\\n\\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\\n\\tajaxTransport: addToPrefiltersOrTransports( transports ),\\n\\n\\t// Main method\\n\\tajax: function( url, options ) {\\n\\n\\t\\t// If url is an object, simulate pre-1.5 signature\\n\\t\\tif ( typeof url === \\\"object\\\" ) {\\n\\t\\t\\toptions = url;\\n\\t\\t\\turl = undefined;\\n\\t\\t}\\n\\n\\t\\t// Force options to be an object\\n\\t\\toptions = options || {};\\n\\n\\t\\tvar transport,\\n\\n\\t\\t\\t// URL without anti-cache param\\n\\t\\t\\tcacheURL,\\n\\n\\t\\t\\t// Response headers\\n\\t\\t\\tresponseHeadersString,\\n\\t\\t\\tresponseHeaders,\\n\\n\\t\\t\\t// timeout handle\\n\\t\\t\\ttimeoutTimer,\\n\\n\\t\\t\\t// Url cleanup var\\n\\t\\t\\turlAnchor,\\n\\n\\t\\t\\t// Request state (becomes false upon send and true upon completion)\\n\\t\\t\\tcompleted,\\n\\n\\t\\t\\t// To know if global events are to be dispatched\\n\\t\\t\\tfireGlobals,\\n\\n\\t\\t\\t// Loop variable\\n\\t\\t\\ti,\\n\\n\\t\\t\\t// uncached part of the url\\n\\t\\t\\tuncached,\\n\\n\\t\\t\\t// Create the final options object\\n\\t\\t\\ts = jQuery.ajaxSetup( {}, options ),\\n\\n\\t\\t\\t// Callbacks context\\n\\t\\t\\tcallbackContext = s.context || s,\\n\\n\\t\\t\\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\\n\\t\\t\\tglobalEventContext = s.context &&\\n\\t\\t\\t\\t( callbackContext.nodeType || callbackContext.jquery ) ?\\n\\t\\t\\t\\tjQuery( callbackContext ) :\\n\\t\\t\\t\\tjQuery.event,\\n\\n\\t\\t\\t// Deferreds\\n\\t\\t\\tdeferred = jQuery.Deferred(),\\n\\t\\t\\tcompleteDeferred = jQuery.Callbacks( \\\"once memory\\\" ),\\n\\n\\t\\t\\t// Status-dependent callbacks\\n\\t\\t\\tstatusCode = s.statusCode || {},\\n\\n\\t\\t\\t// Headers (they are sent all at once)\\n\\t\\t\\trequestHeaders = {},\\n\\t\\t\\trequestHeadersNames = {},\\n\\n\\t\\t\\t// Default abort message\\n\\t\\t\\tstrAbort = \\\"canceled\\\",\\n\\n\\t\\t\\t// Fake xhr\\n\\t\\t\\tjqXHR = {\\n\\t\\t\\t\\treadyState: 0,\\n\\n\\t\\t\\t\\t// Builds headers hashtable if needed\\n\\t\\t\\t\\tgetResponseHeader: function( key ) {\\n\\t\\t\\t\\t\\tvar match;\\n\\t\\t\\t\\t\\tif ( completed ) {\\n\\t\\t\\t\\t\\t\\tif ( !responseHeaders ) {\\n\\t\\t\\t\\t\\t\\t\\tresponseHeaders = {};\\n\\t\\t\\t\\t\\t\\t\\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tresponseHeaders[ match[ 1 ].toLowerCase() + \\\" \\\" ] =\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t( responseHeaders[ match[ 1 ].toLowerCase() + \\\" \\\" ] || [] )\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t.concat( match[ 2 ] );\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\tmatch = responseHeaders[ key.toLowerCase() + \\\" \\\" ];\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\treturn match == null ? null : match.join( \\\", \\\" );\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\t// Raw string\\n\\t\\t\\t\\tgetAllResponseHeaders: function() {\\n\\t\\t\\t\\t\\treturn completed ? responseHeadersString : null;\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\t// Caches the header\\n\\t\\t\\t\\tsetRequestHeader: function( name, value ) {\\n\\t\\t\\t\\t\\tif ( completed == null ) {\\n\\t\\t\\t\\t\\t\\tname = requestHeadersNames[ name.toLowerCase() ] =\\n\\t\\t\\t\\t\\t\\t\\trequestHeadersNames[ name.toLowerCase() ] || name;\\n\\t\\t\\t\\t\\t\\trequestHeaders[ name ] = value;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\treturn this;\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\t// Overrides response content-type header\\n\\t\\t\\t\\toverrideMimeType: function( type ) {\\n\\t\\t\\t\\t\\tif ( completed == null ) {\\n\\t\\t\\t\\t\\t\\ts.mimeType = type;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\treturn this;\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\t// Status-dependent callbacks\\n\\t\\t\\t\\tstatusCode: function( map ) {\\n\\t\\t\\t\\t\\tvar code;\\n\\t\\t\\t\\t\\tif ( map ) {\\n\\t\\t\\t\\t\\t\\tif ( completed ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Execute the appropriate callbacks\\n\\t\\t\\t\\t\\t\\t\\tjqXHR.always( map[ jqXHR.status ] );\\n\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Lazy-add the new callbacks in a way that preserves old ones\\n\\t\\t\\t\\t\\t\\t\\tfor ( code in map ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\treturn this;\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\t// Cancel the request\\n\\t\\t\\t\\tabort: function( statusText ) {\\n\\t\\t\\t\\t\\tvar finalText = statusText || strAbort;\\n\\t\\t\\t\\t\\tif ( transport ) {\\n\\t\\t\\t\\t\\t\\ttransport.abort( finalText );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tdone( 0, finalText );\\n\\t\\t\\t\\t\\treturn this;\\n\\t\\t\\t\\t}\\n\\t\\t\\t};\\n\\n\\t\\t// Attach deferreds\\n\\t\\tdeferred.promise( jqXHR );\\n\\n\\t\\t// Add protocol if not provided (prefilters might expect it)\\n\\t\\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\\n\\t\\t// We also use the url parameter if available\\n\\t\\ts.url = ( ( url || s.url || location.href ) + \\\"\\\" )\\n\\t\\t\\t.replace( rprotocol, location.protocol + \\\"//\\\" );\\n\\n\\t\\t// Alias method option to type as per ticket trac-12004\\n\\t\\ts.type = options.method || options.type || s.method || s.type;\\n\\n\\t\\t// Extract dataTypes list\\n\\t\\ts.dataTypes = ( s.dataType || \\\"*\\\" ).toLowerCase().match( rnothtmlwhite ) || [ \\\"\\\" ];\\n\\n\\t\\t// A cross-domain request is in order when the origin doesn't match the current origin.\\n\\t\\tif ( s.crossDomain == null ) {\\n\\t\\t\\turlAnchor = document.createElement( \\\"a\\\" );\\n\\n\\t\\t\\t// Support: IE <=8 - 11, Edge 12 - 15\\n\\t\\t\\t// IE throws exception on accessing the href property if url is malformed,\\n\\t\\t\\t// e.g. http://example.com:80x/\\n\\t\\t\\ttry {\\n\\t\\t\\t\\turlAnchor.href = s.url;\\n\\n\\t\\t\\t\\t// Support: IE <=8 - 11 only\\n\\t\\t\\t\\t// Anchor's host property isn't correctly set when s.url is relative\\n\\t\\t\\t\\turlAnchor.href = urlAnchor.href;\\n\\t\\t\\t\\ts.crossDomain = originAnchor.protocol + \\\"//\\\" + originAnchor.host !==\\n\\t\\t\\t\\t\\turlAnchor.protocol + \\\"//\\\" + urlAnchor.host;\\n\\t\\t\\t} catch ( e ) {\\n\\n\\t\\t\\t\\t// If there is an error parsing the URL, assume it is crossDomain,\\n\\t\\t\\t\\t// it can be rejected by the transport if it is invalid\\n\\t\\t\\t\\ts.crossDomain = true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Convert data if not already a string\\n\\t\\tif ( s.data && s.processData && typeof s.data !== \\\"string\\\" ) {\\n\\t\\t\\ts.data = jQuery.param( s.data, s.traditional );\\n\\t\\t}\\n\\n\\t\\t// Apply prefilters\\n\\t\\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\\n\\n\\t\\t// If request was aborted inside a prefilter, stop there\\n\\t\\tif ( completed ) {\\n\\t\\t\\treturn jqXHR;\\n\\t\\t}\\n\\n\\t\\t// We can fire global events as of now if asked to\\n\\t\\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\\n\\t\\tfireGlobals = jQuery.event && s.global;\\n\\n\\t\\t// Watch for a new set of requests\\n\\t\\tif ( fireGlobals && jQuery.active++ === 0 ) {\\n\\t\\t\\tjQuery.event.trigger( \\\"ajaxStart\\\" );\\n\\t\\t}\\n\\n\\t\\t// Uppercase the type\\n\\t\\ts.type = s.type.toUpperCase();\\n\\n\\t\\t// Determine if request has content\\n\\t\\ts.hasContent = !rnoContent.test( s.type );\\n\\n\\t\\t// Save the URL in case we're toying with the If-Modified-Since\\n\\t\\t// and/or If-None-Match header later on\\n\\t\\t// Remove hash to simplify url manipulation\\n\\t\\tcacheURL = s.url.replace( rhash, \\\"\\\" );\\n\\n\\t\\t// More options handling for requests with no content\\n\\t\\tif ( !s.hasContent ) {\\n\\n\\t\\t\\t// Remember the hash so we can put it back\\n\\t\\t\\tuncached = s.url.slice( cacheURL.length );\\n\\n\\t\\t\\t// If data is available and should be processed, append data to url\\n\\t\\t\\tif ( s.data && ( s.processData || typeof s.data === \\\"string\\\" ) ) {\\n\\t\\t\\t\\tcacheURL += ( rquery.test( cacheURL ) ? \\\"&\\\" : \\\"?\\\" ) + s.data;\\n\\n\\t\\t\\t\\t// trac-9682: remove data so that it's not used in an eventual retry\\n\\t\\t\\t\\tdelete s.data;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Add or update anti-cache param if needed\\n\\t\\t\\tif ( s.cache === false ) {\\n\\t\\t\\t\\tcacheURL = cacheURL.replace( rantiCache, \\\"$1\\\" );\\n\\t\\t\\t\\tuncached = ( rquery.test( cacheURL ) ? \\\"&\\\" : \\\"?\\\" ) + \\\"_=\\\" + ( nonce.guid++ ) +\\n\\t\\t\\t\\t\\tuncached;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\\n\\t\\t\\ts.url = cacheURL + uncached;\\n\\n\\t\\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\\n\\t\\t} else if ( s.data && s.processData &&\\n\\t\\t\\t( s.contentType || \\\"\\\" ).indexOf( \\\"application/x-www-form-urlencoded\\\" ) === 0 ) {\\n\\t\\t\\ts.data = s.data.replace( r20, \\\"+\\\" );\\n\\t\\t}\\n\\n\\t\\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\\n\\t\\tif ( s.ifModified ) {\\n\\t\\t\\tif ( jQuery.lastModified[ cacheURL ] ) {\\n\\t\\t\\t\\tjqXHR.setRequestHeader( \\\"If-Modified-Since\\\", jQuery.lastModified[ cacheURL ] );\\n\\t\\t\\t}\\n\\t\\t\\tif ( jQuery.etag[ cacheURL ] ) {\\n\\t\\t\\t\\tjqXHR.setRequestHeader( \\\"If-None-Match\\\", jQuery.etag[ cacheURL ] );\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Set the correct header, if data is being sent\\n\\t\\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\\n\\t\\t\\tjqXHR.setRequestHeader( \\\"Content-Type\\\", s.contentType );\\n\\t\\t}\\n\\n\\t\\t// Set the Accepts header for the server, depending on the dataType\\n\\t\\tjqXHR.setRequestHeader(\\n\\t\\t\\t\\\"Accept\\\",\\n\\t\\t\\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\\n\\t\\t\\t\\ts.accepts[ s.dataTypes[ 0 ] ] +\\n\\t\\t\\t\\t\\t( s.dataTypes[ 0 ] !== \\\"*\\\" ? \\\", \\\" + allTypes + \\\"; q=0.01\\\" : \\\"\\\" ) :\\n\\t\\t\\t\\ts.accepts[ \\\"*\\\" ]\\n\\t\\t);\\n\\n\\t\\t// Check for headers option\\n\\t\\tfor ( i in s.headers ) {\\n\\t\\t\\tjqXHR.setRequestHeader( i, s.headers[ i ] );\\n\\t\\t}\\n\\n\\t\\t// Allow custom headers/mimetypes and early abort\\n\\t\\tif ( s.beforeSend &&\\n\\t\\t\\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\\n\\n\\t\\t\\t// Abort if not done already and return\\n\\t\\t\\treturn jqXHR.abort();\\n\\t\\t}\\n\\n\\t\\t// Aborting is no longer a cancellation\\n\\t\\tstrAbort = \\\"abort\\\";\\n\\n\\t\\t// Install callbacks on deferreds\\n\\t\\tcompleteDeferred.add( s.complete );\\n\\t\\tjqXHR.done( s.success );\\n\\t\\tjqXHR.fail( s.error );\\n\\n\\t\\t// Get transport\\n\\t\\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\\n\\n\\t\\t// If no transport, we auto-abort\\n\\t\\tif ( !transport ) {\\n\\t\\t\\tdone( -1, \\\"No Transport\\\" );\\n\\t\\t} else {\\n\\t\\t\\tjqXHR.readyState = 1;\\n\\n\\t\\t\\t// Send global event\\n\\t\\t\\tif ( fireGlobals ) {\\n\\t\\t\\t\\tglobalEventContext.trigger( \\\"ajaxSend\\\", [ jqXHR, s ] );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// If request was aborted inside ajaxSend, stop there\\n\\t\\t\\tif ( completed ) {\\n\\t\\t\\t\\treturn jqXHR;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Timeout\\n\\t\\t\\tif ( s.async && s.timeout > 0 ) {\\n\\t\\t\\t\\ttimeoutTimer = window.setTimeout( function() {\\n\\t\\t\\t\\t\\tjqXHR.abort( \\\"timeout\\\" );\\n\\t\\t\\t\\t}, s.timeout );\\n\\t\\t\\t}\\n\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tcompleted = false;\\n\\t\\t\\t\\ttransport.send( requestHeaders, done );\\n\\t\\t\\t} catch ( e ) {\\n\\n\\t\\t\\t\\t// Rethrow post-completion exceptions\\n\\t\\t\\t\\tif ( completed ) {\\n\\t\\t\\t\\t\\tthrow e;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Propagate others as results\\n\\t\\t\\t\\tdone( -1, e );\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Callback for when everything is done\\n\\t\\tfunction done( status, nativeStatusText, responses, headers ) {\\n\\t\\t\\tvar isSuccess, success, error, response, modified,\\n\\t\\t\\t\\tstatusText = nativeStatusText;\\n\\n\\t\\t\\t// Ignore repeat invocations\\n\\t\\t\\tif ( completed ) {\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\n\\t\\t\\tcompleted = true;\\n\\n\\t\\t\\t// Clear timeout if it exists\\n\\t\\t\\tif ( timeoutTimer ) {\\n\\t\\t\\t\\twindow.clearTimeout( timeoutTimer );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Dereference transport for early garbage collection\\n\\t\\t\\t// (no matter how long the jqXHR object will be used)\\n\\t\\t\\ttransport = undefined;\\n\\n\\t\\t\\t// Cache response headers\\n\\t\\t\\tresponseHeadersString = headers || \\\"\\\";\\n\\n\\t\\t\\t// Set readyState\\n\\t\\t\\tjqXHR.readyState = status > 0 ? 4 : 0;\\n\\n\\t\\t\\t// Determine if successful\\n\\t\\t\\tisSuccess = status >= 200 && status < 300 || status === 304;\\n\\n\\t\\t\\t// Get response data\\n\\t\\t\\tif ( responses ) {\\n\\t\\t\\t\\tresponse = ajaxHandleResponses( s, jqXHR, responses );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Use a noop converter for missing script but not if jsonp\\n\\t\\t\\tif ( !isSuccess &&\\n\\t\\t\\t\\tjQuery.inArray( \\\"script\\\", s.dataTypes ) > -1 &&\\n\\t\\t\\t\\tjQuery.inArray( \\\"json\\\", s.dataTypes ) < 0 ) {\\n\\t\\t\\t\\ts.converters[ \\\"text script\\\" ] = function() {};\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Convert no matter what (that way responseXXX fields are always set)\\n\\t\\t\\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\\n\\n\\t\\t\\t// If successful, handle type chaining\\n\\t\\t\\tif ( isSuccess ) {\\n\\n\\t\\t\\t\\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\\n\\t\\t\\t\\tif ( s.ifModified ) {\\n\\t\\t\\t\\t\\tmodified = jqXHR.getResponseHeader( \\\"Last-Modified\\\" );\\n\\t\\t\\t\\t\\tif ( modified ) {\\n\\t\\t\\t\\t\\t\\tjQuery.lastModified[ cacheURL ] = modified;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tmodified = jqXHR.getResponseHeader( \\\"etag\\\" );\\n\\t\\t\\t\\t\\tif ( modified ) {\\n\\t\\t\\t\\t\\t\\tjQuery.etag[ cacheURL ] = modified;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// if no content\\n\\t\\t\\t\\tif ( status === 204 || s.type === \\\"HEAD\\\" ) {\\n\\t\\t\\t\\t\\tstatusText = \\\"nocontent\\\";\\n\\n\\t\\t\\t\\t// if not modified\\n\\t\\t\\t\\t} else if ( status === 304 ) {\\n\\t\\t\\t\\t\\tstatusText = \\\"notmodified\\\";\\n\\n\\t\\t\\t\\t// If we have data, let's convert it\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tstatusText = response.state;\\n\\t\\t\\t\\t\\tsuccess = response.data;\\n\\t\\t\\t\\t\\terror = response.error;\\n\\t\\t\\t\\t\\tisSuccess = !error;\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// Extract error from statusText and normalize for non-aborts\\n\\t\\t\\t\\terror = statusText;\\n\\t\\t\\t\\tif ( status || !statusText ) {\\n\\t\\t\\t\\t\\tstatusText = \\\"error\\\";\\n\\t\\t\\t\\t\\tif ( status < 0 ) {\\n\\t\\t\\t\\t\\t\\tstatus = 0;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Set data for the fake xhr object\\n\\t\\t\\tjqXHR.status = status;\\n\\t\\t\\tjqXHR.statusText = ( nativeStatusText || statusText ) + \\\"\\\";\\n\\n\\t\\t\\t// Success/Error\\n\\t\\t\\tif ( isSuccess ) {\\n\\t\\t\\t\\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Status-dependent callbacks\\n\\t\\t\\tjqXHR.statusCode( statusCode );\\n\\t\\t\\tstatusCode = undefined;\\n\\n\\t\\t\\tif ( fireGlobals ) {\\n\\t\\t\\t\\tglobalEventContext.trigger( isSuccess ? \\\"ajaxSuccess\\\" : \\\"ajaxError\\\",\\n\\t\\t\\t\\t\\t[ jqXHR, s, isSuccess ? success : error ] );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Complete\\n\\t\\t\\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\\n\\n\\t\\t\\tif ( fireGlobals ) {\\n\\t\\t\\t\\tglobalEventContext.trigger( \\\"ajaxComplete\\\", [ jqXHR, s ] );\\n\\n\\t\\t\\t\\t// Handle the global AJAX counter\\n\\t\\t\\t\\tif ( !( --jQuery.active ) ) {\\n\\t\\t\\t\\t\\tjQuery.event.trigger( \\\"ajaxStop\\\" );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn jqXHR;\\n\\t},\\n\\n\\tgetJSON: function( url, data, callback ) {\\n\\t\\treturn jQuery.get( url, data, callback, \\\"json\\\" );\\n\\t},\\n\\n\\tgetScript: function( url, callback ) {\\n\\t\\treturn jQuery.get( url, undefined, callback, \\\"script\\\" );\\n\\t}\\n} );\\n\\njQuery.each( [ \\\"get\\\", \\\"post\\\" ], function( _i, method ) {\\n\\tjQuery[ method ] = function( url, data, callback, type ) {\\n\\n\\t\\t// Shift arguments if data argument was omitted\\n\\t\\tif ( isFunction( data ) ) {\\n\\t\\t\\ttype = type || callback;\\n\\t\\t\\tcallback = data;\\n\\t\\t\\tdata = undefined;\\n\\t\\t}\\n\\n\\t\\t// The url can be an options object (which then must have .url)\\n\\t\\treturn jQuery.ajax( jQuery.extend( {\\n\\t\\t\\turl: url,\\n\\t\\t\\ttype: method,\\n\\t\\t\\tdataType: type,\\n\\t\\t\\tdata: data,\\n\\t\\t\\tsuccess: callback\\n\\t\\t}, jQuery.isPlainObject( url ) && url ) );\\n\\t};\\n} );\\n\\njQuery.ajaxPrefilter( function( s ) {\\n\\tvar i;\\n\\tfor ( i in s.headers ) {\\n\\t\\tif ( i.toLowerCase() === \\\"content-type\\\" ) {\\n\\t\\t\\ts.contentType = s.headers[ i ] || \\\"\\\";\\n\\t\\t}\\n\\t}\\n} );\\n\\n\\njQuery._evalUrl = function( url, options, doc ) {\\n\\treturn jQuery.ajax( {\\n\\t\\turl: url,\\n\\n\\t\\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\\n\\t\\ttype: \\\"GET\\\",\\n\\t\\tdataType: \\\"script\\\",\\n\\t\\tcache: true,\\n\\t\\tasync: false,\\n\\t\\tglobal: false,\\n\\n\\t\\t// Only evaluate the response if it is successful (gh-4126)\\n\\t\\t// dataFilter is not invoked for failure responses, so using it instead\\n\\t\\t// of the default converter is kludgy but it works.\\n\\t\\tconverters: {\\n\\t\\t\\t\\\"text script\\\": function() {}\\n\\t\\t},\\n\\t\\tdataFilter: function( response ) {\\n\\t\\t\\tjQuery.globalEval( response, options, doc );\\n\\t\\t}\\n\\t} );\\n};\\n\\n\\njQuery.fn.extend( {\\n\\twrapAll: function( html ) {\\n\\t\\tvar wrap;\\n\\n\\t\\tif ( this[ 0 ] ) {\\n\\t\\t\\tif ( isFunction( html ) ) {\\n\\t\\t\\t\\thtml = html.call( this[ 0 ] );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// The elements to wrap the target around\\n\\t\\t\\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\\n\\n\\t\\t\\tif ( this[ 0 ].parentNode ) {\\n\\t\\t\\t\\twrap.insertBefore( this[ 0 ] );\\n\\t\\t\\t}\\n\\n\\t\\t\\twrap.map( function() {\\n\\t\\t\\t\\tvar elem = this;\\n\\n\\t\\t\\t\\twhile ( elem.firstElementChild ) {\\n\\t\\t\\t\\t\\telem = elem.firstElementChild;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn elem;\\n\\t\\t\\t} ).append( this );\\n\\t\\t}\\n\\n\\t\\treturn this;\\n\\t},\\n\\n\\twrapInner: function( html ) {\\n\\t\\tif ( isFunction( html ) ) {\\n\\t\\t\\treturn this.each( function( i ) {\\n\\t\\t\\t\\tjQuery( this ).wrapInner( html.call( this, i ) );\\n\\t\\t\\t} );\\n\\t\\t}\\n\\n\\t\\treturn this.each( function() {\\n\\t\\t\\tvar self = jQuery( this ),\\n\\t\\t\\t\\tcontents = self.contents();\\n\\n\\t\\t\\tif ( contents.length ) {\\n\\t\\t\\t\\tcontents.wrapAll( html );\\n\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tself.append( html );\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t},\\n\\n\\twrap: function( html ) {\\n\\t\\tvar htmlIsFunction = isFunction( html );\\n\\n\\t\\treturn this.each( function( i ) {\\n\\t\\t\\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\\n\\t\\t} );\\n\\t},\\n\\n\\tunwrap: function( selector ) {\\n\\t\\tthis.parent( selector ).not( \\\"body\\\" ).each( function() {\\n\\t\\t\\tjQuery( this ).replaceWith( this.childNodes );\\n\\t\\t} );\\n\\t\\treturn this;\\n\\t}\\n} );\\n\\n\\njQuery.expr.pseudos.hidden = function( elem ) {\\n\\treturn !jQuery.expr.pseudos.visible( elem );\\n};\\njQuery.expr.pseudos.visible = function( elem ) {\\n\\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\\n};\\n\\n\\n\\n\\njQuery.ajaxSettings.xhr = function() {\\n\\ttry {\\n\\t\\treturn new window.XMLHttpRequest();\\n\\t} catch ( e ) {}\\n};\\n\\nvar xhrSuccessStatus = {\\n\\n\\t\\t// File protocol always yields status code 0, assume 200\\n\\t\\t0: 200,\\n\\n\\t\\t// Support: IE <=9 only\\n\\t\\t// trac-1450: sometimes IE returns 1223 when it should be 204\\n\\t\\t1223: 204\\n\\t},\\n\\txhrSupported = jQuery.ajaxSettings.xhr();\\n\\nsupport.cors = !!xhrSupported && ( \\\"withCredentials\\\" in xhrSupported );\\nsupport.ajax = xhrSupported = !!xhrSupported;\\n\\njQuery.ajaxTransport( function( options ) {\\n\\tvar callback, errorCallback;\\n\\n\\t// Cross domain only allowed if supported through XMLHttpRequest\\n\\tif ( support.cors || xhrSupported && !options.crossDomain ) {\\n\\t\\treturn {\\n\\t\\t\\tsend: function( headers, complete ) {\\n\\t\\t\\t\\tvar i,\\n\\t\\t\\t\\t\\txhr = options.xhr();\\n\\n\\t\\t\\t\\txhr.open(\\n\\t\\t\\t\\t\\toptions.type,\\n\\t\\t\\t\\t\\toptions.url,\\n\\t\\t\\t\\t\\toptions.async,\\n\\t\\t\\t\\t\\toptions.username,\\n\\t\\t\\t\\t\\toptions.password\\n\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t// Apply custom fields if provided\\n\\t\\t\\t\\tif ( options.xhrFields ) {\\n\\t\\t\\t\\t\\tfor ( i in options.xhrFields ) {\\n\\t\\t\\t\\t\\t\\txhr[ i ] = options.xhrFields[ i ];\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Override mime type if needed\\n\\t\\t\\t\\tif ( options.mimeType && xhr.overrideMimeType ) {\\n\\t\\t\\t\\t\\txhr.overrideMimeType( options.mimeType );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// X-Requested-With header\\n\\t\\t\\t\\t// For cross-domain requests, seeing as conditions for a preflight are\\n\\t\\t\\t\\t// akin to a jigsaw puzzle, we simply never set it to be sure.\\n\\t\\t\\t\\t// (it can always be set on a per-request basis or even using ajaxSetup)\\n\\t\\t\\t\\t// For same-domain requests, won't change header if already provided.\\n\\t\\t\\t\\tif ( !options.crossDomain && !headers[ \\\"X-Requested-With\\\" ] ) {\\n\\t\\t\\t\\t\\theaders[ \\\"X-Requested-With\\\" ] = \\\"XMLHttpRequest\\\";\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Set headers\\n\\t\\t\\t\\tfor ( i in headers ) {\\n\\t\\t\\t\\t\\txhr.setRequestHeader( i, headers[ i ] );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Callback\\n\\t\\t\\t\\tcallback = function( type ) {\\n\\t\\t\\t\\t\\treturn function() {\\n\\t\\t\\t\\t\\t\\tif ( callback ) {\\n\\t\\t\\t\\t\\t\\t\\tcallback = errorCallback = xhr.onload =\\n\\t\\t\\t\\t\\t\\t\\t\\txhr.onerror = xhr.onabort = xhr.ontimeout =\\n\\t\\t\\t\\t\\t\\t\\t\\t\\txhr.onreadystatechange = null;\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( type === \\\"abort\\\" ) {\\n\\t\\t\\t\\t\\t\\t\\t\\txhr.abort();\\n\\t\\t\\t\\t\\t\\t\\t} else if ( type === \\\"error\\\" ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// Support: IE <=9 only\\n\\t\\t\\t\\t\\t\\t\\t\\t// On a manual native abort, IE9 throws\\n\\t\\t\\t\\t\\t\\t\\t\\t// errors on any property access that is not readyState\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( typeof xhr.status !== \\\"number\\\" ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcomplete( 0, \\\"error\\\" );\\n\\t\\t\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcomplete(\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// File: protocol always yields status 0; see trac-8605, trac-14207\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\txhr.status,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\txhr.statusText\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\t\\tcomplete(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\txhrSuccessStatus[ xhr.status ] || xhr.status,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\txhr.statusText,\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// Support: IE <=9 only\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// IE9 has no XHR2 but throws on binary (trac-11426)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// For XHR2 non-text, let the caller handle it (gh-2498)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t( xhr.responseType || \\\"text\\\" ) !== \\\"text\\\" ||\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttypeof xhr.responseText !== \\\"string\\\" ?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{ binary: xhr.response } :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{ text: xhr.responseText },\\n\\t\\t\\t\\t\\t\\t\\t\\t\\txhr.getAllResponseHeaders()\\n\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t};\\n\\t\\t\\t\\t};\\n\\n\\t\\t\\t\\t// Listen to events\\n\\t\\t\\t\\txhr.onload = callback();\\n\\t\\t\\t\\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \\\"error\\\" );\\n\\n\\t\\t\\t\\t// Support: IE 9 only\\n\\t\\t\\t\\t// Use onreadystatechange to replace onabort\\n\\t\\t\\t\\t// to handle uncaught aborts\\n\\t\\t\\t\\tif ( xhr.onabort !== undefined ) {\\n\\t\\t\\t\\t\\txhr.onabort = errorCallback;\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\txhr.onreadystatechange = function() {\\n\\n\\t\\t\\t\\t\\t\\t// Check readyState before timeout as it changes\\n\\t\\t\\t\\t\\t\\tif ( xhr.readyState === 4 ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Allow onerror to be called first,\\n\\t\\t\\t\\t\\t\\t\\t// but that will not handle a native abort\\n\\t\\t\\t\\t\\t\\t\\t// Also, save errorCallback to a variable\\n\\t\\t\\t\\t\\t\\t\\t// as xhr.onerror cannot be accessed\\n\\t\\t\\t\\t\\t\\t\\twindow.setTimeout( function() {\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( callback ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\terrorCallback();\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t} );\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t};\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Create the abort callback\\n\\t\\t\\t\\tcallback = callback( \\\"abort\\\" );\\n\\n\\t\\t\\t\\ttry {\\n\\n\\t\\t\\t\\t\\t// Do send the request (this may raise an exception)\\n\\t\\t\\t\\t\\txhr.send( options.hasContent && options.data || null );\\n\\t\\t\\t\\t} catch ( e ) {\\n\\n\\t\\t\\t\\t\\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\\n\\t\\t\\t\\t\\tif ( callback ) {\\n\\t\\t\\t\\t\\t\\tthrow e;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t},\\n\\n\\t\\t\\tabort: function() {\\n\\t\\t\\t\\tif ( callback ) {\\n\\t\\t\\t\\t\\tcallback();\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t};\\n\\t}\\n} );\\n\\n\\n\\n\\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\\njQuery.ajaxPrefilter( function( s ) {\\n\\tif ( s.crossDomain ) {\\n\\t\\ts.contents.script = false;\\n\\t}\\n} );\\n\\n// Install script dataType\\njQuery.ajaxSetup( {\\n\\taccepts: {\\n\\t\\tscript: \\\"text/javascript, application/javascript, \\\" +\\n\\t\\t\\t\\\"application/ecmascript, application/x-ecmascript\\\"\\n\\t},\\n\\tcontents: {\\n\\t\\tscript: /\\\\b(?:java|ecma)script\\\\b/\\n\\t},\\n\\tconverters: {\\n\\t\\t\\\"text script\\\": function( text ) {\\n\\t\\t\\tjQuery.globalEval( text );\\n\\t\\t\\treturn text;\\n\\t\\t}\\n\\t}\\n} );\\n\\n// Handle cache's special case and crossDomain\\njQuery.ajaxPrefilter( \\\"script\\\", function( s ) {\\n\\tif ( s.cache === undefined ) {\\n\\t\\ts.cache = false;\\n\\t}\\n\\tif ( s.crossDomain ) {\\n\\t\\ts.type = \\\"GET\\\";\\n\\t}\\n} );\\n\\n// Bind script tag hack transport\\njQuery.ajaxTransport( \\\"script\\\", function( s ) {\\n\\n\\t// This transport only deals with cross domain or forced-by-attrs requests\\n\\tif ( s.crossDomain || s.scriptAttrs ) {\\n\\t\\tvar script, callback;\\n\\t\\treturn {\\n\\t\\t\\tsend: function( _, complete ) {\\n\\t\\t\\t\\tscript = jQuery( \\\"