From a19c0f61dd3191e0868efe7854b72b430944af7f Mon Sep 17 00:00:00 2001 From: shiyimin Date: Thu, 21 Feb 2013 17:14:18 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0iqa=E8=A6=81=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E7=9A=84=E9=97=AE=E9=A2=98=E7=9A=84=E8=AE=A8=E8=AE=BA?= =?UTF-8?q?=E6=96=87=E6=A1=A3=EF=BC=8C=E5=88=A9=E7=94=A8github=20pull=20re?= =?UTF-8?q?quest=E9=87=8C=E7=9A=84=E9=80=90=E8=A1=8C=E8=AF=84=E8=AE=BA?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E6=9D=A5=E6=94=AF=E6=8C=81=E5=A4=9A=E4=BA=BA?= =?UTF-8?q?=E8=AE=A8=E8=AE=BA=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 14 +++++--------- README.md~ | 8 -------- 2 files changed, 5 insertions(+), 17 deletions(-) delete mode 100644 README.md~ diff --git a/README.md b/README.md index 9f267a3..5781025 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,8 @@ 编译命令: - -* java -cp lib/antlr-3.4-complete.jar org.antlr.Tool cc/iqa/iQALexer.g -* java -cp lib/antlr-3.4-complete.jar org.antlr.Tool cc/iqa/iQAParser.g -* java -cp lib/antlr-3.4-complete.jar org.antlr.Tool cc/iqa/iQATree.g -* javac -cp lib/antlr-3.4-complete.jar cc/iqa/iQALexer.java cc/iqa/iQAParser.java cc/iqa/iQATree.java iQATest.java + java -cp lib/antlr-3.4-complete.jar org.antlr.Tool cc/iqa/iQALexer.g + java -cp lib/antlr-3.4-complete.jar org.antlr.Tool cc/iqa/iQAParser.g + java -cp lib/antlr-3.4-complete.jar org.antlr.Tool cc/iqa/iQATree.g + javac -cp lib/antlr-3.4-complete.jar cc/iqa/iQALexer.java cc/iqa/iQAParser.java cc/iqa/iQATree.java iQATest.java 运行命令: - -* java -cp lib/antlr-3.4-complete.jar:. iQATest ../iqa.test/res/testParseStepBasic.txt cc/iqa/iQAMobileJUnit.stg - -开源协议:GPL v3 + java -cp lib/antlr-3.4-complete.jar:. iQATest ../iqa.test/res/testParseStepBasic.txt cc/iqa/iQAMobileJUnit.stg diff --git a/README.md~ b/README.md~ deleted file mode 100644 index 5781025..0000000 --- a/README.md~ +++ /dev/null @@ -1,8 +0,0 @@ -编译命令: - java -cp lib/antlr-3.4-complete.jar org.antlr.Tool cc/iqa/iQALexer.g - java -cp lib/antlr-3.4-complete.jar org.antlr.Tool cc/iqa/iQAParser.g - java -cp lib/antlr-3.4-complete.jar org.antlr.Tool cc/iqa/iQATree.g - javac -cp lib/antlr-3.4-complete.jar cc/iqa/iQALexer.java cc/iqa/iQAParser.java cc/iqa/iQATree.java iQATest.java - -运行命令: - java -cp lib/antlr-3.4-complete.jar:. iQATest ../iqa.test/res/testParseStepBasic.txt cc/iqa/iQAMobileJUnit.stg From 972d42a10df9b1b5bc68cf04b6ee455bc1cad6e1 Mon Sep 17 00:00:00 2001 From: shiyimin Date: Thu, 21 Feb 2013 17:16:31 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=BF=98=E8=AE=B0=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E8=AE=A8=E8=AE=BA=E7=94=A8=E7=9A=84=E6=96=87=E6=A1=A3=E4=BA=86?= =?UTF-8?q?=EF=BC=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- design/vision.txt | 221 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 design/vision.txt diff --git a/design/vision.txt b/design/vision.txt new file mode 100644 index 0000000..a69e533 --- /dev/null +++ b/design/vision.txt @@ -0,0 +1,221 @@ +林曙勇先生,你好! + +正如私信里跟你讲的那样,我设计iqa的初衷就是实现“需求即模型”的想法。这里先说一下当前iqa能够实现的功能: + +1. 通过代码模板的方式生成不同编程语言的测试用例,如下面一个iqa用例: + + 场景: 一个演示用场景 + * 测试的第一个步骤 + * 测试的第二个步骤 + + 如果用户输入一个代码模板,如一个junit代码模板:https://github.com/vowei/iqa/blob/master/src/cc/iqa/iQAMobileJUnit.stg,就会生成类似下面的junit代码: + public class 具有缩进编写方式的功能 extends iQATestBase { + // ... + + public void test一个演示用场景() throws Exception + { + AutomationContext context = this.getContainer().getComponent(AutomationContext.class); + Hashtable resolver = null; + Hashtable variables = new Hashtable(); + this.S("测试的第一个步骤"); + this.S("测试的第二个步骤"); + } + + public class ControlNameMap { ... } + } + + 而如果采用apple javascript的代码模板,如:https://github.com/vowei/iqa/blob/master/src/cc/iqa/iQAMobileApple.stg,则就会生成类似下面的javascript代码: + // ... + this.test一个演示用场景 = function() { + var scenarioInfo = { + "title": 一个演示用场景 + }; + testRunner.ScenarioSetup(scenarioInfo); + + testRunner.Step("测试的第一个步骤"); + testRunner.Step("测试的第二个步骤"); + testRunner.ScenarioCleanup(); + } + +2. 支持变量的解析,以及表示式处理,因为iqa支持中文,因此变量采用的形式是包含在中括号里的字符就是变量,如 [变量]、[变量名 可以 有空格]。基本的表达式(也可以跟普通编程语言一样赋值一个函数)如: + [结果] = [变量1] + [变量2] + [函数变量] = * 测试的第一个步骤 + +3. 支持条件判断、循环等语句,如: + 当 [开盘时间] + * 测试买卖股票 + 否则 + * 测试其他功能 + +4. 支持函数的功能,实际上就是测试场景之间可以相互调用。 + +5. iqa编译器本身可以用java、python、C#等多种编程语言编写。 + +那通过iqa实现模型驱动的想法是这样的,首先,如BDD一样,每个测试步骤都是一个函数,执行具体的测试逻辑。由于iqa可以解析表达式,所以就可以获知变量之间的依赖关系,如下面的表达式,就表明变量 [结果] 依赖于 [变量1] 和 [变量2] +[结果] = [变量1] + [变量2] + +而通过类似函数一样的,测试场景之间相互调用,以及表达式跟步骤地关系,就可以知道两个相互依赖的变量是如何更新、关联的,如下面的用例(语法跟当前的iqa语法还不一样,只是演示我的想法,现在要做的就是把下面这种建模过程尽量容易直观): + +场景: 验证账户资金不能为负 +* 买卖股票并盈利 +* 买卖股票并亏损 + +场景: 买卖股票并盈利 +* 购入[股票]共100股 + [成本] = 100 * [股票.价格] +* 售出[股票]共100股 + [销售额] = 100 * [股票.价格] +* [盈利] = [销售额] - [成本] +* 验证 [盈利] >= 0 + +场景: 买卖股票并亏损 + +经过编译器分析,可以得知,变量间的依赖关系:[盈利] /--- 依赖于 -> [销售额] -- 依赖于 -> [股票.价格] + \___ 依赖于 -> [成本] -- 依赖于 / + +上面的依赖关系里 [盈利] 已经依赖其他变量,暂时不提,而变量 [销售额] 和 [成本] 的修改方式为: + +验证账户资金不能为负 -- 调用 --> 买卖股票并盈利 -- 调用 --> 购入[股票]共100股 -- 修改 --> [成本] +验证账户资金不能为负 -- 调用 --> 买卖股票并盈利 -- 调用 --> 售出[股票]共100股 -- 修改 --> [销售额] + +这样编译器通过分析变量与测试步骤之间的关系,就相当于知道一个模型,应该可以生成一些用例了,但是这里还缺了一些东西,如 [股票] 和 [股票.价格] 这两个内容在上面都没有提。这是因为其是两个测试外部变量,如 [股票] 是数据测试驱动试,通过外部配置文件读入的值;而 [股票.价格] 又是要根据 [股票] 的值,在待测程序界面上读取的实时价格,而从界面上读取某个控件的内容的工作就是iquery来做的,iquery类似jquery,就是通过一个类似css selector的语法在一个控件树上定位某个或者一群控件集合。 + +在最上面的junit测试代码里,里面有一个ControlNameMap内嵌类,就是用来做这个事情的,如测试用例源码里可以将变量 [股票.价格] 的 [股票] 提取出来获取股票的具体值,然后再通过ControlNameMap获取 [股票.价格] 对应的iquery语句找到控件并读取指定股票的价格。 + +之所以要这么设计,是因为我觉得,因为测试场景间可以相互调用,用户在提供需求的时候,可以提一个比较泛的需求;然后由测试人员通过补充测试步骤和对应的场景的方式,一方面细化需求,一方面就直接是测试用例了。当细化到一定程度,并包含了变量之间依赖关系,以及变量与测试步骤之间的联系后,就可以将它作为模型开始生成用例了。 + +现在还仅仅是设想阶段,需要请你这样的模型驱动测试专家来评审下可行性,而且还有些地方没有想透,例如根据某些变量的值,禁用或启用一些场景的语法还没有想清楚,也需要想你这样的专家来帮忙出主意。 + + +----------------------------------------------------------------------------------------------------------------------------------------------------- + +在 2013年1月16日上午12:18,林曙勇 写道: +hi, + 你好,谢谢你的来信,根据你的问题,我尝试说一下我的理解。 + 第一点,关于需求及模型。 + 现在一般提的比较多的是“需求即测试用例”,意思是说如果我们采用ATDD/BDD之类的开发方式,如果能够比较好的贯彻测试先行的方式,测试用例的可读性,准确性都能达到一定的要求的话,测试用例本身可以当作需求文档的作用。 + 我比较认可你的观点,“测试场景间可以相互调用,用户在提供需求的时候,可以提一个比较泛的需求;然后由测试人员通过补充测试步骤和对应的场景的方式,一方面细化需求,一方面就直接是测试用例了”,但是对于你提出的 “需求即模型”的说法,还不是有特别清晰的概念。 + 在我们的实践中,MBT主要用来捕捉一些常规的需求分析/测试设计比较难以覆盖的问题。但是在需求分析的最初,就引入模型的概念,我不确定是不是一个好的做法。在软件开发的一开始,我比较认可ATDD/User Story这种更多地鼓励业务代表,测试,开发充分沟通的方式。如果一开始就强调模型,也许会不利于进行充分的沟通? + 但在功能逐渐成形之后,往往会发现ATDD Case测试设计上的疏漏,这个时候可以引进更多的测试手段,比如MBT是一种值得考虑的做法。 + + 第二点,: + 如果你是想实现中文编程的话,其实Robot Framework也是可以做到的。 + 我附了一个例子,是可以直接用Robot的命令执行的。我也附上了log,供参考。 +个人建议还是可以先看一下它是否可以满足你的要求,再决定是否要重新开发一个新的Framework,毕竟一个东西从概念,到雏形,到能用,再到好用,中间付出的劳动还是很大的。 +http://code.google.com/p/robotframework/ 。 + + 如有理解不到位的地方,还请指正。谢谢。 +林曙湧 + +----------------------------------------------------------------------------------------------------------------------------------------------------- + +在 2013年1月17日下午5:31,Shi Yimin 写道: +林先生,你好 + +iqa的目标不是使用中文编程,cucumber已经可以使用中文编写BDD测试用例了,因此重复造轮子没有意义。其实我不是很赞同“需求就测试用例”的概念,我觉得开发任务和测试用例都是从需求衍生出来的,因此我更倾向于“需求即模型的概念”;而且一般客户描述需求的时候都不会很清晰,需求分解的时候,一般也只是分解到一定程度就会停止了,不会细到具体的测试用例级别。 + +比如说:“买黄金T+D的保证金需要合理”这个需求,就可以衍生出“保证金为0的场景”,“保证金在初始时余额足够,但收盘时因为亏损导致不足”,“保证金在初始时余额不足,但是第一天盈利、第二天又亏损再次不足”等种种场景。 + +现有的几个建模工具,如NModel等,因为是使用C#等编程语言描述,造成建模很困难,而robot framework编写的测试用例不是很直观。 + +我之所以想开发iqa这个轮子,就是想让模型驱动测试的建模过程变得简单直观,模型是直接使用用户的语言描述,但是又能达到建模的效果。这一块我承认如何实现这个目标尚不是很清楚,我需要再想想。 + +最后,对于画User Story的描述需求的方式,我也持一些怀疑态度,我自己也画过类似的图,这种图的问题是:画图需要有一定的功底,另外用户是否理解User Story图也有待商榷。 + +谢谢 +施懿民 + +-----------------------------------------------------------------------------------------------------------------------------------------------------3 + +在 2013年1月17日下午9:09,林曙勇 写道: +hi, 你好 + 在我看来,测试模型是对具体测试用例的抽象,应该是已经有很多具体的测试想法之后,再对这些想法加以分类归纳,抓住其中的本质,提炼出模型。 + 用户提的需求都是一些比较粗的点,不能直接用于开发,需要做一些细化提炼。在我们的实践中,会细化到测试用例的测什么的级别,然后在一个迭代中并行开发产品代码和自动化测试用例(怎么测),所谓的测试驱动开发。 + 在你没有搞清楚测什么的时候,通常你也没有想好代码到底要实现什么功能。 + 你举的关于保证金的例子,我理解这里面是有一个挺清晰的状态机模型的,比如账户余额的不同状态以及状态之间的跃迁。 + 但未必所有的软件都是这种应用模式的。另外,哪怕是在这种状态比较清晰的情况下,在explore 用户的需求的时候,太早提出模型,会不会有点操之过急,反而会漏掉一些隐性需求? + MBT的复杂性来自于两方面,一方面是模型本身的复杂性,另外一块是工具使用上的门槛。 + 如果用自然语言就能实现模型的话,可能可以降低工具使用的门槛,但应该不能解决模型本身的复杂性的问题。 + 模型本身是抽象的,你的想法可能是让用户从具体的需求可以比较自然地过渡到一个抽象的模型。如果模型用编程语言实现的话,从具体的需求到抽象的模型可能会存在一个比较明显的跳跃。 + 但是用了自然语言的话,是否这个跳跃就不存在了呢? + 比如说我们一开始会描述说, + 我们需要一个交通工具,有四个轮子,四扇门,里面还有1个3人沙发,2个单人沙发,还有圆圆的可以控制方向的装置...... + + 但后来发现,这样描述还是太费劲,所以可能会给它做一个抽象叫做车,这样就实现了从具体需求到抽象概念的飞跃。 + 我怀疑用了自然语言,这种飞跃还是会存在的。 +另外User Story是不用画图的,这个可能理解上不太对。 + 谢谢。 + 林曙湧 + +----------------------------------------------------------------------------------------------------------------------------------------------------- + +在 2013年1月27日下午11:30,Shi Yimin 写道: +林曙勇,你好 + +非常抱歉,这些天公司繁琐的事情非常多,一直抽不出时间来回复你的邮件,请看我在你邮件里的回复。最后冒昧问一句,我们的邮件讨论是否可以放在网上公开,以便更多的人参与进来讨论? + +谢谢 +施懿民 + +在 2013年1月17日下午9:09,林曙勇 写道: +hi, 你好 + 在我看来,测试模型是对具体测试用例的抽象,应该是已经有很多具体的测试想法之后,再对这些想法加以分类归纳,抓住其中的本质,提炼出模型。 +[懿民] 这一点我的观点是一半对一半,的确,是应该需要有很多具体的做法之后,才能归纳总结出规律。但并不意味着一定要等到系统开发过程中,写了很多测试用例之后才能建模。很多系统都是针对相似问题的不同甚至是反复的解决方案,因此在系统研发出来之前建好模型是可行的。 + +模型应该也是可以逐步演化的,举个可能不恰当的例子,在飞机造出来之前,不应该还是要将飞机的模型放在风洞里测试一下的吗?举个很简化的例子,比如说登录系统,在系统实现之前,应该就知道需要登录名和密钥,一开始模型可以简单点。但是到了向银行这些大型企业,内部集成了很多不同厂商,不同技术的系统,需要单点登录,即使其登录方式各不相同(如使用智能卡、用户名/密码、域认证等),还是可以通过细化登录系统的简单模型开始,逐步演化的。 + +我不少的想法都是从看这本书来的:Model-based Software Testing and Analysis with C#, 其就是介绍nmodel使用以及原理的一本书。 + +总的来说,我认为先建模型是一个可行,而且更合适的开发、测试方法。 + + 用户提的需求都是一些比较粗的点,不能直接用于开发,需要做一些细化提炼。在我们的实践中,会细化到测试用例的测什么的级别,然后在一个迭代中并行开发产品代码和自动化测试用例(怎么测),所谓的测试驱动开发。 +[懿民] 测试驱动开发我自己也正在做,我的实践中,一般是先看看需求,然后先写自动化测试用例 - 虽然是一个单元级别的测试用例,但一般我不会做到每个函数都测试那么细节,只是演示类型之间,各个函数之间如何相互调用,调用顺序如何,可以理解成API级别的使用场景,再补齐空函数,再在空函数里写注释,最后实现代码。这种方式,主要是向其他组件的开发人员定义我对外的接口,或者定义我对所依赖的组件要求的接口,数据结构等等。 + +对于有界面的应用,我现在的做法是先做UI,采用MVC/MVVM等设计模式,先是建立伪造的模型对象,然后通过restful api或者web service调用,定义restful/web service接口,反向实现程序。我认为这样的编码方式更有效率,因为一开始整个团队就知道UI工作流,数据流,避免后期整合的麻烦。 + + 在你没有搞清楚测什么的时候,通常你也没有想好代码到底要实现什么功能。 +[懿民] 这一点我同意,因此我倾向于反向实现代码。 + + 你举的关于保证金的例子,我理解这里面是有一个挺清晰的状态机模型的,比如账户余额的不同状态以及状态之间的跃迁。 + 但未必所有的软件都是这种应用模式的。另外,哪怕是在这种状态比较清晰的情况下,在explore 用户的需求的时候,太早提出模型,会不会有点操之过急,反而会漏掉一些隐性需求? +[懿民] 我的意思不是急于提出模型,而是希望实现从需求 -> 粗略模型 -> 细化的模型 -> 测试(UI)驱动开发。希望能够实现从需求到模型、到代码、到测试用例之间双向联系。因此如果用户希望改变需求的时候,通过修改或评估需求可以快速到达模型、代码、测试用例。 + + MBT的复杂性来自于两方面,一方面是模型本身的复杂性,另外一块是工具使用上的门槛。 + 如果用自然语言就能实现模型的话,可能可以降低工具使用的门槛,但应该不能解决模型本身的复杂性的问题。 +[懿民] 使用自然语言建模,降低模型驱动测试的门槛是我的愿景,虽然我还没有明白怎么做。 + + 模型本身是抽象的,你的想法可能是让用户从具体的需求可以比较自然地过渡到一个抽象的模型。如果模型用编程语言实现的话,从具体的需求到抽象的模型可能会存在一个比较明显的跳跃。 + 但是用了自然语言的话,是否这个跳跃就不存在了呢? +[懿民] 人们常说一图胜千言,既表明了图的总结能力,同时也隐含了画图所需的总结和表现能力。虽然文字一开始会不清晰,但是随着大家对系统的理解的深入,文字会越来越清晰丰富,(我觉得)从而更好建模。 + + 比如说我们一开始会描述说, + 我们需要一个交通工具,有四个轮子,四扇门,里面还有1个3人沙发,2个单人沙发,还有圆圆的可以控制方向的装置...... + + 但后来发现,这样描述还是太费劲,所以可能会给它做一个抽象叫做车,这样就实现了从具体需求到抽象概念的飞跃。 +[懿民] 或者反过来说,车是不是就是一个很好的模型呢?“车”是一个粗略的模型,然后有4个“轮子”模型,四扇“门”模型等等。 + + 我怀疑用了自然语言,这种飞跃还是会存在的。 +另外User Story是不用画图的,这个可能理解上不太对。 +[懿民] 我理解成UML里的User Story图了,如果不用画图,我也在想,是不是可以从User Story总结和提取模型呢? + + 谢谢。 + 林曙湧 + + +----------------------------------------------------------------------------------------------------------------------------------------------------- + +在 2013年2月16日下午2:15,林曙勇 写道: +hi, + 不好意思,年前比较忙,所以直到今天才看到这封信。 + 原文比较长,我就不一一回复了,说一下我的想法,供参考。 + 我觉得我们讨论到了一些类似基于模型的开发的话题,比如你举的飞机模型的例子。 但其实对于这个话题,我其实并没有太多的经验。我对于ATDD相关的话题关注得比较多,也是因为我们公司这边主要是在采用这种方式来做开发。所以对ATDD和MDD来做比较,讨论优劣,可能我并没有足够的积累来讨论这个问题。 + 我知道Model Driven Development 也是在业界被深入研究过的话题,应该和UML等技术比较相关一些。但是我们其实也没有采用UML这套开发技术,所以我对UML的理解也是比较肤浅的。 + 只是了解到一些之前在UML领域非常有名的专家,之后都转向敏捷领域的一些开发方式了(ATDD/TDD)等,而且据我所知,MDD并没有大规模的推广开来,可能是因为它本身还存在一些问题吧。 + 在ATDD里面,一般是这样的流程 + User Story -->拆分过的User Story---> Acceptance Case--->驱动开发 + 我们一般建议Acceptance Case 应该尽可能有一些具体的例子来描述,甚至越具体越好,不是很推荐用抽象的方式来描述,以避免Business User 和开发团队之间的误解。 + 而基于模型的测试,一般是一些较为抽象的规则描述,然后通过一些数学模型生成一组我们想要的case。 + 我不知道这两者是不是很容易统一起来,感觉有些难,但也许在某些时候也是可以统一起来,但应该不是所有的情况都一样。这方面,我也需要更多的思考。 + 另外,如果有人愿意参与一起讨论的话,应该也是很不错的,不知道你会考虑放在哪里呢? +BR, +Shuyong From ee965b41bf89eb628fcc295294ad15c43999b631 Mon Sep 17 00:00:00 2001 From: Shi Yimin Date: Sun, 9 Aug 2015 17:31:52 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E7=AD=BE=E5=85=A5=E4=B9=8B=E5=89=8D?= =?UTF-8?q?=E5=81=9A=E4=BB=98=E8=B4=B9=E8=AE=B2=E8=AF=BE=E6=97=B6=E5=88=B6?= =?UTF-8?q?=E4=BD=9C=E7=9A=84=E4=B8=80=E4=BA=9BDemo=E6=BA=90=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bonus/.DS_Store | Bin 0 -> 12292 bytes bonus/android test/.DS_Store | Bin 0 -> 8196 bytes bonus/android test/android-basic/.DS_Store | Bin 0 -> 6148 bytes .../android-basic/first-demo/.DS_Store | Bin 0 -> 10244 bytes .../android-basic/first-demo/.classpath | 11 + .../android-basic/first-demo/.gitignore | 2 + .../android-basic/first-demo/.project | 33 + .../.settings/org.eclipse.jdt.core.prefs | 4 + .../first-demo/AndroidManifest.xml | 28 + .../first-demo/ic_launcher-web.png | Bin 0 -> 51394 bytes .../first-demo/proguard-project.txt | 20 + .../first-demo/project.properties | 15 + .../android-basic/first-demo/res/.DS_Store | Bin 0 -> 10244 bytes .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 7658 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 3777 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 12516 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 24777 bytes .../first-demo/res/layout/activity_main.xml | 22 + .../first-demo/res/menu/main.xml | 12 + .../first-demo/res/values-v11/styles.xml | 11 + .../first-demo/res/values-v14/styles.xml | 12 + .../first-demo/res/values-w820dp/dimens.xml | 10 + .../first-demo/res/values/dimens.xml | 7 + .../first-demo/res/values/strings.xml | 10 + .../first-demo/res/values/styles.xml | 20 + .../android-basic/first-demo/src/.DS_Store | Bin 0 -> 6148 bytes .../first-demo/src/com/.DS_Store | Bin 0 -> 6148 bytes .../first-demo/src/com/example/.DS_Store | Bin 0 -> 6148 bytes .../src/com/example/demo/MainActivity.java | 48 + .../ant-code-coverage-demo/.DS_Store | Bin 0 -> 10244 bytes .../ant-code-coverage-demo/.classpath | 8 + .../ant-code-coverage-demo/.project | 33 + .../org.eclipse.ltk.core.refactoring.prefs | 3 + .../AndroidManifest.xml | 41 + .../bin/AndroidManifest.xml | 41 + .../bin/AndroidManifest.xml.d | 2 + .../ant-code-coverage-demo/bin/build.prop | 10 + .../bin/chapter1-debug-unaligned.apk | Bin 0 -> 22758 bytes .../bin/chapter1-debug-unaligned.apk.d | 4 + .../bin/chapter1-debug.apk | Bin 0 -> 22760 bytes .../bin/chapter1-instrumented-unaligned.apk | Bin 0 -> 175149 bytes .../bin/chapter1-instrumented-unaligned.apk.d | 5 + .../bin/chapter1-instrumented.apk | Bin 0 -> 175151 bytes .../ant-code-coverage-demo/bin/chapter1.ap_ | Bin 0 -> 14011 bytes .../ant-code-coverage-demo/bin/chapter1.ap_.d | 14 + .../ant-code-coverage-demo/bin/classes.dex | Bin 0 -> 428592 bytes .../ant-code-coverage-demo/bin/classes.dex.d | 24 + .../ant-code-coverage-demo/bin/jarlist.cache | 3 + .../ant-code-coverage-demo/bin/proguard.txt | 9 + .../bin/res/drawable-hdpi/ic_launcher.png | Bin 0 -> 3966 bytes .../bin/res/drawable-ldpi/ic_launcher.png | Bin 0 -> 1537 bytes .../bin/res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2200 bytes .../ant-code-coverage-demo/build.xml | 92 + .../ant-code-coverage-demo/gen/R.java.d | 14 + .../android/test/chapter1/BuildConfig.java | 6 + .../cn/hzbook/android/test/chapter1/R.java | 44 + .../ant-code-coverage-demo/lint.xml | 3 + .../ant-code-coverage-demo/local.properties | 10 + .../proguard-project.txt | 20 + .../ant-code-coverage-demo/proguard.cfg | 40 + .../ant-code-coverage-demo/project.properties | 12 + .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 4147 bytes .../res/drawable-ldpi/ic_launcher.png | Bin 0 -> 1723 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2574 bytes .../res/layout/bookdetails.xml | 39 + .../res/layout/bookeditor.xml | 38 + .../res/layout/list_item.xml | 8 + .../res/layout/main.xml | 23 + .../res/menu/viewdetailsmenu.xml | 7 + .../res/values/strings.xml | 7 + .../android/test/chapter1/BookDetails.java | 97 + .../android/test/chapter1/BookEditor.java | 104 + .../android/test/chapter1/EditFlags.java | 8 + .../android/test/chapter1/MainActivity.java | 146 + .../TheSimpleExpandableListAdapter.java | 30 + .../ant-code-coverage-demo/test/.DS_Store | Bin 0 -> 10244 bytes .../test/AndroidManifest.xml | 19 + .../test/ant.properties | 18 + .../ant-code-coverage-demo/test/bin/.DS_Store | Bin 0 -> 6148 bytes .../test/bin/AndroidManifest.xml | 19 + .../test/bin/AndroidManifest.xml.d | 2 + .../test/bin/_files/0.html | 1 + .../test/bin/_files/1.html | 1 + .../test/bin/_files/2.html | 1 + .../test/bin/_files/3.html | 1 + .../test/bin/_files/4.html | 1 + .../test/bin/_files/5.html | 1 + .../test/bin/build.prop | 10 + .../test/bin/chapter1-debug-unaligned.apk | Bin 0 -> 63842 bytes .../test/bin/chapter1-debug-unaligned.apk.d | 5 + .../test/bin/chapter1-debug.apk | Bin 0 -> 63843 bytes .../test/bin/chapter1.ap_ | Bin 0 -> 33591 bytes .../test/bin/chapter1.ap_.d | 11 + .../test/bin/classes.dex | Bin 0 -> 95776 bytes .../test/bin/classes.dex.d | 9 + .../test/bin/coverage.html | 1 + .../test/bin/coverage.txt | 20 + .../test/bin/coverage.xml | 333 + .../test/bin/jarlist.cache | 3 + .../test/bin/proguard.txt | 3 + .../bin/res/drawable-hdpi/ic_launcher.png | Bin 0 -> 9193 bytes .../bin/res/drawable-ldpi/ic_launcher.png | Bin 0 -> 2658 bytes .../bin/res/drawable-mdpi/ic_launcher.png | Bin 0 -> 5057 bytes .../bin/res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 14068 bytes .../ant-code-coverage-demo/test/build.xml | 92 + .../ant-code-coverage-demo/test/gen/R.java.d | 7 + .../test/chapter1/test/BuildConfig.java | 6 + .../hzbook/android/test/chapter1/test/R.java | 19 + .../test/local.properties | 10 + .../test/proguard-project.txt | 20 + .../test/project.properties | 14 + .../test/res/drawable-hdpi/ic_launcher.png | Bin 0 -> 9397 bytes .../test/res/drawable-ldpi/ic_launcher.png | Bin 0 -> 2729 bytes .../test/res/drawable-mdpi/ic_launcher.png | Bin 0 -> 5237 bytes .../test/res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 14383 bytes .../test/res/values/strings.xml | 6 + .../ant-code-coverage-demo/test/src/.DS_Store | Bin 0 -> 8196 bytes .../test/src/cn/.DS_Store | Bin 0 -> 8196 bytes .../test/src/cn/hzbook/.DS_Store | Bin 0 -> 8196 bytes .../test/src/cn/hzbook/android/.DS_Store | Bin 0 -> 8196 bytes .../test/src/cn/hzbook/android/test/.DS_Store | Bin 0 -> 8196 bytes .../cn/hzbook/android/test/chapter1/.DS_Store | Bin 0 -> 8196 bytes .../test/chapter1/test/DemoUnitTest.java | 57 + bonus/bdd/.DS_Store | Bin 0 -> 10244 bytes bonus/bdd/cucumber/.DS_Store | Bin 0 -> 10244 bytes .../cucumber/cucumber-protractor/.DS_Store | Bin 0 -> 6148 bytes .../cucumber-protractor/course1/.DS_Store | Bin 0 -> 6148 bytes .../cucumber-protractor/course1/Makefile | 5 + .../cucumber-protractor/course1/npm-debug.log | 82 + .../course1/tests/.DS_Store | Bin 0 -> 6148 bytes .../course1/tests/features/.DS_Store | Bin 0 -> 6148 bytes .../tests/features/product-list.feature | 6 + .../step-definitions/productListStepDef.js | 45 + .../step-definitions/productListStepDef.js~ | 19 + .../course1/tests/features/support/world.js | 16 + .../course1/tests/features/support/world.js~ | 5 + .../cucumber-protractor/course2/.DS_Store | Bin 0 -> 6148 bytes .../cucumber-protractor/course2/Makefile | 5 + .../tests/features/product-list.feature | 8 + .../tests/features/product-list.feature~ | 6 + .../step-definitions/productListStepDef.js | 41 + .../step-definitions/productListStepDef.js~ | 19 + .../course2/tests/features/support/world.js | 16 + .../course2/tests/features/support/world.js~ | 5 + .../getting-started/Makefile | 4 + .../tests/features/shipping.feature | 30 + .../features/step-definitions/shippingDef.js | 74 + .../tests/features/support/hooks.js | 38 + .../tests/features/support/robot.js | 27 + .../bdd/cucumber/cucumber-turtorial/.DS_Store | Bin 0 -> 12292 bytes .../cucumber-turtorial/features/.DS_Store | Bin 0 -> 6148 bytes .../features/product-list.feature | 6 + .../step-definitions/productListStepDef.js | 39 + .../step-definitions/productListStepDef.js~ | 19 + .../features/support/world.js | 16 + .../features/support/world.js~ | 5 + .../cucumber-turtorial/hands-on-lab/.DS_Store | Bin 0 -> 6148 bytes .../hands-on-lab/i18n/i18n.feature | 9 + .../hands-on-lab/i18n/i18nDef.js | 24 + .../hands-on-lab/nuskin-ui-demo.js | 30 + .../scenario-outline/demo.feature | 11 + .../hands-on-lab/scenario-outline/demoDef.js | 16 + .../hands-on-lab/step-arguments/demo.feature | 10 + .../step-arguments/demoStepDef.js | 25 + .../hands-on-lab/thenDemo.js | 23 + .../cucumber-turtorial/protractor/.DS_Store | Bin 0 -> 8196 bytes .../protractor/demo/angular.min.js | 214 + .../protractor/demo/bootstrap.css | 6167 +++++ .../protractor/demo/calc.js | 57 + .../protractor/demo/protractor-demo.html | 44 + .../protractor/demo/webwxgetmsgimg.jpeg | Bin 0 -> 44340 bytes .../protractor/webdriver/cancel-promise.js | 21 + .../protractor/webdriver/defer.js | 19 + .../research/Shipping.feature | 44 + .../research/m-commerce.feature | 17 + .../research/mcommerceDef.js | 148 + bonus/bdd/cucumber/demo/.DS_Store | Bin 0 -> 6148 bytes .../matchemailaddress-stepdefs.js | 21 + .../matchemailaddress-stepdefs.js~ | 21 + .../matchemailaddress.feature | 20 + .../matchemailaddress.feature~ | 19 + .../matchfloatingnumber-stepdefs.js | 22 + .../matchfloatingnumber-stepdefs.js~ | 21 + .../cucumber-unit/matchfloatingnumber.feature | 32 + .../matchfloatingnumber.feature~ | 34 + .../demo/cucumber-unit/product-code.js | 6 + .../demo/cucumber-unit/product-code.js~ | 6 + bonus/bdd/cucumber/syntax/.DS_Store | Bin 0 -> 10244 bytes bonus/bdd/cucumber/syntax/background/Makefile | 5 + .../tests/features/background.feature | 16 + .../step-definitions/backgroundDef.js | 19 + .../bdd/cucumber/syntax/basic-sample/Makefile | 4 + .../tests/features/GettingStart.feature | 7 + .../step_definitions/gettingStartStepDef.js | 27 + .../tests/features/support/world.js | 5 + bonus/bdd/cucumber/syntax/cli/.DS_Store | Bin 0 -> 6148 bytes bonus/bdd/cucumber/syntax/cli/Makefile | 5 + bonus/bdd/cucumber/syntax/cli/README | 3 + bonus/bdd/cucumber/syntax/cli/tests/.DS_Store | Bin 0 -> 6148 bytes .../cli/tests/features/product-list.feature | 6 + .../syntax/course-scenario-outline/Makefile | 5 + .../tests/features/product-list.feature | 11 + .../step-definitions/productListStepDef.js | 39 + .../step-definitions/productListStepDef.js~ | 19 + .../tests/features/support/world.js | 16 + .../tests/features/support/world.js~ | 5 + bonus/bdd/cucumber/syntax/hooks/Makefile | 5 + .../features/hook-withfailscenario.feature | 7 + .../syntax/hooks/tests/features/hooks.feature | 4 + .../features/step-definitions/hooksDef.js | 51 + .../features/step-definitions/tagHooksDef.js | 29 + .../hooks/tests/features/support/world.js~ | 5 + .../hooks/tests/features/tagHooks.feature | 11 + bonus/bdd/cucumber/syntax/research/.DS_Store | Bin 0 -> 6148 bytes .../syntax/research/bizcard/basic.feature | 21 + .../cucumber/syntax/step-argument/Makefile | 5 + .../tests/features/step-argument.feature | 31 + .../step-definitions/stepArgumentDef.js | 22 + .../tests/features/support/world.js | 9 + .../tests/features/support/world.js~ | 5 + bonus/bdd/cucumber/syntax/tags/Makefile | 5 + bonus/bdd/cucumber/syntax/tags/README | 20 + .../syntax/tags/tests/features/bug.feature | 12 + .../syntax/tags/tests/features/e2e.feature | 13 + .../features/step-definitions/tagsDef.js | 13 + .../syntax/tags/tests/features/tag.feature | 14 + .../bdd/cucumber/syntax/world-sample/Makefile | 4 + .../tests/features/GettingStart.feature | 7 + .../step_definitions/gettingStartStepDef.js | 30 + .../tests/features/support/world.js | 7 + bonus/bdd/jasmine/.DS_Store | Bin 0 -> 8196 bytes bonus/bdd/jasmine/jasmine1/.DS_Store | Bin 0 -> 6148 bytes bonus/bdd/jasmine/jasmine1/SpecRunner.html | 24 + bonus/bdd/jasmine/jasmine1/spec/sourceSpec.js | 9 + bonus/bdd/jasmine/jasmine1/src/source.js | 3 + bonus/bdd/jasmine/jasmine2/.DS_Store | Bin 0 -> 6148 bytes bonus/bdd/jasmine/jasmine2/SpecRunner.html | 24 + bonus/bdd/jasmine/jasmine2/spec/sourceSpec.js | 29 + bonus/bdd/jasmine/jasmine2/src/source.js | 4 + bonus/bdd/jasmine/jasmine3/SpecRunner.html | 24 + bonus/bdd/jasmine/jasmine3/spec/sourceSpec.js | 22 + bonus/bdd/jasmine/jasmine3/src/source.js | 10 + bonus/bdd/jasmine/jasmine3/src/source.js~ | 11 + bonus/bdd/jasmine/jasmine4/.DS_Store | Bin 0 -> 6148 bytes bonus/bdd/jasmine/jasmine4/SpecRunner.html | 24 + bonus/bdd/jasmine/jasmine4/spec/sourceSpec.js | 23 + bonus/bdd/jasmine/jasmine4/src/source.js | 11 + bonus/bdd/jasmine/jasmine5/SpecRunner.html | 24 + .../jasmine/jasmine5/spec/downloaderSpec.js | 14 + bonus/bdd/jasmine/jasmine5/src/downloader.js | 17 + bonus/bdd/jasmine/lib/.DS_Store | Bin 0 -> 6148 bytes bonus/bdd/jasmine/lib/jasmine-2.0.1/boot.js | 181 + .../bdd/jasmine/lib/jasmine-2.0.1/console.js | 165 + .../jasmine/lib/jasmine-2.0.1/jasmine-html.js | 390 + .../bdd/jasmine/lib/jasmine-2.0.1/jasmine.css | 59 + .../bdd/jasmine/lib/jasmine-2.0.1/jasmine.js | 2516 ++ .../lib/jasmine-2.0.1/jasmine_favicon.png | Bin 0 -> 1486 bytes bonus/cordova/.DS_Store | Bin 0 -> 10244 bytes bonus/cordova/.gitignore | 3 + bonus/cordova/3000cg/.DS_Store | Bin 0 -> 8196 bytes bonus/cordova/3000cg/nanhucg/.DS_Store | Bin 0 -> 14340 bytes bonus/cordova/3000cg/nanhucg/config.xml | 28 + bonus/cordova/3000cg/nanhucg/hooks/.DS_Store | Bin 0 -> 6148 bytes bonus/cordova/3000cg/nanhucg/hooks/README.md | 196 + bonus/cordova/3000cg/nanhucg/npm-debug.log | 250 + .../3000cg/nanhucg/platforms/.DS_Store | Bin 0 -> 6148 bytes .../3000cg/nanhucg/platforms/platforms.json | 3 + .../cordova/3000cg/nanhucg/plugins/.DS_Store | Bin 0 -> 6148 bytes .../3000cg/nanhucg/plugins/android.json | 172 + .../3000cg/nanhucg/plugins/baiduloc/.DS_Store | Bin 0 -> 6148 bytes .../nanhucg/plugins/baiduloc/plugin.xml | 22 + .../cordova/3000cg/nanhucg/plugins/fetch.json | 139 + .../3000cg/nanhucg/plugins/toast/plugin.xml | 29 + bonus/cordova/3000cg/nanhucg/www/.DS_Store | Bin 0 -> 8196 bytes .../nanhucg/www/css/images/ajax-loader.gif | Bin 0 -> 7825 bytes .../nanhucg/www/css/images/icons-18-black.png | Bin 0 -> 1968 bytes .../nanhucg/www/css/images/icons-18-white.png | Bin 0 -> 1988 bytes .../nanhucg/www/css/images/icons-36-black.png | Bin 0 -> 3859 bytes .../nanhucg/www/css/images/icons-36-white.png | Bin 0 -> 3861 bytes .../nanhucg/www/css/jquery.mobile-1.3.2.css | 3370 +++ .../www/css/jquery.mobile-1.3.2.min.css | 24 + .../www/css/jquery.mobile.structure-1.3.2.css | 2314 ++ .../cordova/3000cg/nanhucg/www/html/.DS_Store | Bin 0 -> 6148 bytes .../3000cg/nanhucg/www/html/Focus_on.html | 310 + .../cordova/3000cg/nanhucg/www/html/Geo.html | 256 + .../cordova/3000cg/nanhucg/www/html/JDXQ.html | 155 + .../3000cg/nanhucg/www/html/Login.html | 238 + .../3000cg/nanhucg/www/html/MessageInfo.html | 134 + .../3000cg/nanhucg/www/html/Modifykey.html | 164 + .../3000cg/nanhucg/www/html/Newsuper.html | 347 + .../cordova/3000cg/nanhucg/www/html/SBXQ.html | 156 + .../3000cg/nanhucg/www/html/Set_up.html | 47 + .../3000cg/nanhucg/www/html/baiduMap.html | 85 + .../cordova/3000cg/nanhucg/www/html/case.html | 356 + .../3000cg/nanhucg/www/html/contact.html | 91 + .../3000cg/nanhucg/www/html/home_page.html | 172 + .../3000cg/nanhucg/www/html/inspection.html | 298 + .../3000cg/nanhucg/www/html/newAdd.html | 352 + .../cordova/3000cg/nanhucg/www/html/push.html | 108 + .../3000cg/nanhucg/www/html/record.html | 229 + .../3000cg/nanhucg/www/html/supervision.html | 299 + .../3000cg/nanhucg/www/images/Focus_on.png | Bin 0 -> 5180 bytes .../cordova/3000cg/nanhucg/www/images/bg.png | Bin 0 -> 7429 bytes .../3000cg/nanhucg/www/images/case.png | Bin 0 -> 3463 bytes .../3000cg/nanhucg/www/images/help.png | Bin 0 -> 5457 bytes .../3000cg/nanhucg/www/images/inspection.png | Bin 0 -> 5612 bytes .../3000cg/nanhucg/www/images/phone.png | Bin 0 -> 4141 bytes .../3000cg/nanhucg/www/images/record.png | Bin 0 -> 3620 bytes .../3000cg/nanhucg/www/images/set_up.png | Bin 0 -> 5775 bytes .../3000cg/nanhucg/www/images/vision.png | Bin 0 -> 4971 bytes .../cordova/3000cg/nanhucg/www/images/yi.gif | Bin 0 -> 63884 bytes bonus/cordova/3000cg/nanhucg/www/index.html | 8 + bonus/cordova/3000cg/nanhucg/www/js/.DS_Store | Bin 0 -> 6148 bytes .../cordova/3000cg/nanhucg/www/js/BaiduLoc.js | 43 + .../3000cg/nanhucg/www/js/Toast-Plugin.js | 32 + .../3000cg/nanhucg/www/js/fileuploader.js | 280 + .../3000cg/nanhucg/www/js/jquery-1.7.2.js | 9404 +++++++ .../3000cg/nanhucg/www/js/jquery-1.8.2.min.js | 2 + bonus/cordova/3000cg/nanhucg/www/js/jquery.js | 9597 +++++++ .../nanhucg/www/js/jquery.mobile-1.3.2.min.js | 9 + bonus/cordova/3000cg/nanhucg/www/js/sonic.js | 304 + bonus/cordova/cg/.DS_Store | Bin 0 -> 10244 bytes bonus/cordova/cg/config.xml | 26 + bonus/cordova/cg/hooks/README.md | 196 + bonus/cordova/cg/platforms/.DS_Store | Bin 0 -> 6148 bytes bonus/cordova/cg/platforms/platforms.json | 4 + bonus/cordova/cg/plugins/.DS_Store | Bin 0 -> 6148 bytes bonus/cordova/cg/plugins/android.json | 122 + .../LICENSE | 201 + .../README.md | 59 + .../example/css/index.css | 115 + .../example/index.html | 58 + .../example/js/index.js | 59 + .../plugin.xml | 102 + .../www/pushservice.js | 203 + bonus/cordova/cg/plugins/fetch.json | 27 + bonus/cordova/cg/plugins/ios.json | 48 + bonus/cordova/cg/www/.DS_Store | Bin 0 -> 10244 bytes .../cordova/cg/www/css/images/ajax-loader.gif | Bin 0 -> 7825 bytes .../cg/www/css/images/icons-18-black.png | Bin 0 -> 1968 bytes .../cg/www/css/images/icons-18-white.png | Bin 0 -> 1988 bytes .../cg/www/css/images/icons-36-black.png | Bin 0 -> 3859 bytes .../cg/www/css/images/icons-36-white.png | Bin 0 -> 3861 bytes .../cg/www/css/jquery.mobile-1.3.2.css | 3370 +++ .../cg/www/css/jquery.mobile-1.3.2.min.css | 24 + .../www/css/jquery.mobile.structure-1.3.2.css | 2314 ++ bonus/cordova/cg/www/html/.DS_Store | Bin 0 -> 6148 bytes bonus/cordova/cg/www/html/Focus_on.html | 261 + bonus/cordova/cg/www/html/Geo.html | 256 + bonus/cordova/cg/www/html/JDXQ.html | 108 + bonus/cordova/cg/www/html/Login.html | 118 + bonus/cordova/cg/www/html/Newsuper.html | 323 + bonus/cordova/cg/www/html/SBXQ.html | 109 + bonus/cordova/cg/www/html/Set_up.html | 152 + bonus/cordova/cg/www/html/case.html | 304 + bonus/cordova/cg/www/html/contact.html | 88 + bonus/cordova/cg/www/html/home_page.html | 143 + bonus/cordova/cg/www/html/inspection.html | 248 + bonus/cordova/cg/www/html/newAdd.html | 323 + bonus/cordova/cg/www/html/record.html | 179 + bonus/cordova/cg/www/html/supervision.html | 248 + bonus/cordova/cg/www/images/Focus_on.png | Bin 0 -> 5180 bytes bonus/cordova/cg/www/images/bg.png | Bin 0 -> 7429 bytes bonus/cordova/cg/www/images/case.png | Bin 0 -> 3463 bytes bonus/cordova/cg/www/images/help.png | Bin 0 -> 5457 bytes bonus/cordova/cg/www/images/inspection.png | Bin 0 -> 5612 bytes bonus/cordova/cg/www/images/phone.png | Bin 0 -> 4141 bytes bonus/cordova/cg/www/images/record.png | Bin 0 -> 3620 bytes bonus/cordova/cg/www/images/set_up.png | Bin 0 -> 5775 bytes bonus/cordova/cg/www/images/vision.png | Bin 0 -> 4971 bytes bonus/cordova/cg/www/images/yi.gif | Bin 0 -> 63884 bytes bonus/cordova/cg/www/img/logo.png | Bin 0 -> 21814 bytes bonus/cordova/cg/www/index.html | 8 + bonus/cordova/cg/www/js/.DS_Store | Bin 0 -> 6148 bytes bonus/cordova/cg/www/js/Toast-Plugin.js | 32 + bonus/cordova/cg/www/js/fileuploader.js | 280 + bonus/cordova/cg/www/js/jquery-1.7.2.js | 9404 +++++++ bonus/cordova/cg/www/js/jquery-1.8.2.min.js | 2 + bonus/cordova/cg/www/js/jquery.js | 9597 +++++++ .../cg/www/js/jquery.mobile-1.3.2.min.js | 9 + bonus/cordova/cg/www/js/sonic.js | 304 + bonus/cordova/demo/.DS_Store | Bin 0 -> 8196 bytes bonus/cordova/demo/config.xml | 26 + bonus/cordova/demo/hooks/README.md | 196 + bonus/cordova/demo/www/css/index.css | 115 + bonus/cordova/demo/www/img/logo.png | Bin 0 -> 21814 bytes bonus/cordova/demo/www/index.html | 49 + bonus/cordova/demo/www/js/index.js | 51 + bonus/cordova/hello/.DS_Store | Bin 0 -> 8196 bytes bonus/cordova/hello/config.xml | 27 + bonus/cordova/hello/hooks/README.md | 196 + bonus/cordova/hello/platforms/.DS_Store | Bin 0 -> 6148 bytes bonus/cordova/hello/platforms/platforms.json | 4 + bonus/cordova/hello/plugins/.DS_Store | Bin 0 -> 6148 bytes bonus/cordova/hello/plugins/android.json | 43 + bonus/cordova/hello/plugins/fetch.json | 18 + bonus/cordova/hello/plugins/ios.json | 83 + bonus/cordova/hello/www/.DS_Store | Bin 0 -> 6148 bytes .../hello/www/css/images/ajax-loader.gif | Bin 0 -> 7825 bytes .../hello/www/css/images/icons-18-black.png | Bin 0 -> 1968 bytes .../hello/www/css/images/icons-18-white.png | Bin 0 -> 1988 bytes .../hello/www/css/images/icons-36-black.png | Bin 0 -> 3859 bytes .../hello/www/css/images/icons-36-white.png | Bin 0 -> 3861 bytes bonus/cordova/hello/www/css/index.css | 115 + .../hello/www/css/jquery.mobile-1.3.2.css | 3370 +++ .../hello/www/css/jquery.mobile-1.3.2.min.css | 24 + .../www/css/jquery.mobile.structure-1.3.2.css | 2314 ++ bonus/cordova/hello/www/img/logo.png | Bin 0 -> 21814 bytes bonus/cordova/hello/www/index.html | 323 + bonus/cordova/hello/www/js/index.js | 51 + .../cordova/hello/www/js/jquery-1.8.2.min.js | 2 + .../hello/www/js/jquery.mobile-1.3.2.min.js | 9 + bonus/cordova/html5/.DS_Store | Bin 0 -> 6148 bytes bonus/cordova/html5/.idea/.name | 1 + bonus/cordova/html5/.idea/html5.iml | 8 + bonus/cordova/html5/.idea/misc.xml | 14 + bonus/cordova/html5/.idea/modules.xml | 8 + bonus/cordova/html5/.idea/vcs.xml | 6 + bonus/cordova/html5/.idea/workspace.xml | 270 + bonus/cordova/html5/localstorage/demo.html | 18 + .../html5/localstorage/event-demo.html | 35 + bonus/html5 test/.DS_Store | Bin 0 -> 12292 bytes bonus/html5 test/karma/.DS_Store | Bin 0 -> 6148 bytes bonus/html5 test/karma/coverage/.DS_Store | Bin 0 -> 6148 bytes .../html5 test/karma/coverage/CONTRIBUTING.md | 9 + bonus/html5 test/karma/coverage/README.md | 174 + bonus/html5 test/karma/coverage/karma.conf.js | 102 + .../html5 test/karma/coverage/karma.conf.js~ | 102 + bonus/html5 test/karma/coverage/license.txt | 48 + bonus/html5 test/karma/coverage/package.json | 28 + bonus/html5 test/karma/coverage/package.json~ | 27 + .../karma/coverage/spec/geometryUtilsSpec.js | 69 + .../coverage/spec/imageServiceUtilsSpec.js | 87 + bonus/html5 test/karma/coverage/spec/main.js | 43 + .../coverage/src/esri-utils/geometryUtils.js | 23 + .../src/esri-utils/imageServiceUtils.js | 40 + .../html5 test/karma/coverage/src/index.html | 83 + bonus/html5 test/karma/demo/.DS_Store | Bin 0 -> 6148 bytes bonus/html5 test/karma/demo/CONTRIBUTING.md | 9 + bonus/html5 test/karma/demo/README.md | 174 + bonus/html5 test/karma/demo/karma.conf.js | 102 + bonus/html5 test/karma/demo/license.txt | 48 + bonus/html5 test/karma/demo/package.json | 27 + .../karma/demo/spec/geometryUtilsSpec.js | 70 + .../karma/demo/spec/imageServiceUtilsSpec.js | 87 + bonus/html5 test/karma/demo/spec/main.js | 43 + .../demo/src/esri-utils/geometryUtils.js | 24 + .../demo/src/esri-utils/geometryUtils.js~ | 23 + .../demo/src/esri-utils/imageServiceUtils.js | 40 + bonus/html5 test/karma/demo/src/index.html | 83 + bonus/html5 test/protractor/.DS_Store | Bin 0 -> 6148 bytes bonus/html5 test/protractor/conf.js | 10 + .../protractor/hands-on-lab/baidu-it.js | 23 + .../protractor/hands-on-lab/nuskin-ui-demo.js | 38 + bonus/html5 test/protractor/spec.js | 54 + bonus/html5 test/qunit/.DS_Store | Bin 0 -> 6148 bytes bonus/html5 test/qunit/asynctest.html | 14 + bonus/html5 test/qunit/asynctest.html~ | 14 + bonus/html5 test/qunit/asynctest.js | 11 + bonus/html5 test/qunit/check-for-global.html | 21 + bonus/html5 test/qunit/check-for-global.html~ | 21 + bonus/html5 test/qunit/deepequal.html | 14 + bonus/html5 test/qunit/deepequal.html~ | 14 + bonus/html5 test/qunit/deepequal.js | 5 + bonus/html5 test/qunit/deepequal.js~ | 5 + bonus/html5 test/qunit/equal.html | 14 + bonus/html5 test/qunit/equal.html~ | 14 + bonus/html5 test/qunit/equal.js | 8 + bonus/html5 test/qunit/equal.js~ | 8 + bonus/html5 test/qunit/group.html | 14 + bonus/html5 test/qunit/group.js | 23 + bonus/html5 test/qunit/hello-word.html | 19 + bonus/html5 test/qunit/no-try-catch.html | 23 + bonus/html5 test/qunit/no-try-catch.html~ | 19 + bonus/html5 test/qunit/ok.html | 14 + bonus/html5 test/qunit/ok.html~ | 14 + bonus/html5 test/qunit/ok.js | 10 + bonus/html5 test/qunit/ok.js~ | 10 + bonus/html5 test/qunit/qunit/jquery.min.js | 5 + bonus/html5 test/qunit/qunit/qunit.css | 244 + bonus/html5 test/qunit/qunit/qunit.js | 2152 ++ bonus/html5 test/qunit/qunit/syn.js | 2858 ++ bonus/html5 test/qunit/qunitdemo.html~ | 19 + bonus/html5 test/qunit/synccallback.html | 14 + bonus/html5 test/qunit/synccallback.html~ | 14 + bonus/html5 test/qunit/synccallback.js | 9 + bonus/html5 test/qunit/synccallback.js~ | 9 + bonus/html5 test/qunit/useraction-source.js | 14 + bonus/html5 test/qunit/useraction.html | 15 + bonus/html5 test/qunit/useraction.js | 17 + bonus/html5 test/tdd-hands-on-lab/.DS_Store | Bin 0 -> 6148 bytes .../step3-completed/.DS_Store | Bin 0 -> 6148 bytes .../step3-completed/exercise1.html | 41 + .../step3-completed/exercise2.html | 41 + .../step3-completed/img/.DS_Store | Bin 0 -> 6148 bytes .../step3-completed/img/.gitkeep | 0 .../step3-completed/js/controllers.js | 13 + .../step3-completed/phones/phones.txt | 155 + .../step3-completed/test/conf.js | 8 + .../step3-completed/test/e2e.js | 15 + .../tdd-hands-on-lab/step3/.DS_Store | Bin 0 -> 6148 bytes .../tdd-hands-on-lab/step3/img/.DS_Store | Bin 0 -> 6148 bytes .../tdd-hands-on-lab/step3/img/.gitkeep | 0 .../step3/img/glyphicons-halflings-white.png | Bin 0 -> 8777 bytes .../step3/img/glyphicons-halflings.png | Bin 0 -> 12601 bytes .../step3/img/phones/dell-streak-7.0.jpg | Bin 0 -> 23086 bytes .../step3/img/phones/dell-streak-7.1.jpg | Bin 0 -> 23269 bytes .../step3/img/phones/dell-streak-7.2.jpg | Bin 0 -> 4686 bytes .../step3/img/phones/dell-streak-7.3.jpg | Bin 0 -> 28319 bytes .../step3/img/phones/dell-streak-7.4.jpg | Bin 0 -> 28541 bytes .../step3/img/phones/dell-venue.0.jpg | Bin 0 -> 22965 bytes .../step3/img/phones/dell-venue.1.jpg | Bin 0 -> 6872 bytes .../step3/img/phones/dell-venue.2.jpg | Bin 0 -> 11845 bytes .../step3/img/phones/dell-venue.3.jpg | Bin 0 -> 12845 bytes .../step3/img/phones/dell-venue.4.jpg | Bin 0 -> 9446 bytes .../step3/img/phones/dell-venue.5.jpg | Bin 0 -> 9407 bytes .../phones/droid-2-global-by-motorola.0.jpg | Bin 0 -> 16729 bytes .../phones/droid-2-global-by-motorola.1.jpg | Bin 0 -> 28093 bytes .../phones/droid-2-global-by-motorola.2.jpg | Bin 0 -> 33910 bytes .../img/phones/droid-pro-by-motorola.0.jpg | Bin 0 -> 38713 bytes .../img/phones/droid-pro-by-motorola.1.jpg | Bin 0 -> 28440 bytes .../step3/img/phones/lg-axis.0.jpg | Bin 0 -> 40932 bytes .../step3/img/phones/lg-axis.1.jpg | Bin 0 -> 10533 bytes .../step3/img/phones/lg-axis.2.jpg | Bin 0 -> 7826 bytes .../step3/img/phones/motorola-atrix-4g.0.jpg | Bin 0 -> 23174 bytes .../step3/img/phones/motorola-atrix-4g.1.jpg | Bin 0 -> 16530 bytes .../step3/img/phones/motorola-atrix-4g.2.jpg | Bin 0 -> 23788 bytes .../step3/img/phones/motorola-atrix-4g.3.jpg | Bin 0 -> 19553 bytes .../phones/motorola-bravo-with-motoblur.0.jpg | Bin 0 -> 28478 bytes .../phones/motorola-bravo-with-motoblur.1.jpg | Bin 0 -> 17522 bytes .../phones/motorola-bravo-with-motoblur.2.jpg | Bin 0 -> 40296 bytes .../phones/motorola-charm-with-motoblur.0.jpg | Bin 0 -> 40906 bytes .../phones/motorola-charm-with-motoblur.1.jpg | Bin 0 -> 19570 bytes .../phones/motorola-charm-with-motoblur.2.jpg | Bin 0 -> 23459 bytes .../phones/motorola-defy-with-motoblur.0.jpg | Bin 0 -> 31971 bytes .../phones/motorola-defy-with-motoblur.1.jpg | Bin 0 -> 27619 bytes .../phones/motorola-defy-with-motoblur.2.jpg | Bin 0 -> 17334 bytes .../img/phones/motorola-xoom-with-wi-fi.0.jpg | Bin 0 -> 34430 bytes .../img/phones/motorola-xoom-with-wi-fi.1.jpg | Bin 0 -> 28183 bytes .../img/phones/motorola-xoom-with-wi-fi.2.jpg | Bin 0 -> 4077 bytes .../img/phones/motorola-xoom-with-wi-fi.3.jpg | Bin 0 -> 32370 bytes .../img/phones/motorola-xoom-with-wi-fi.4.jpg | Bin 0 -> 15111 bytes .../img/phones/motorola-xoom-with-wi-fi.5.jpg | Bin 0 -> 14687 bytes .../step3/img/phones/motorola-xoom.0.jpg | Bin 0 -> 26175 bytes .../step3/img/phones/motorola-xoom.1.jpg | Bin 0 -> 23398 bytes .../step3/img/phones/motorola-xoom.2.jpg | Bin 0 -> 23686 bytes .../step3/img/phones/nexus-s.0.jpg | Bin 0 -> 19005 bytes .../step3/img/phones/nexus-s.1.jpg | Bin 0 -> 16354 bytes .../step3/img/phones/nexus-s.2.jpg | Bin 0 -> 6231 bytes .../step3/img/phones/nexus-s.3.jpg | Bin 0 -> 21118 bytes .../step3/img/phones/samsung-galaxy-tab.0.jpg | Bin 0 -> 28506 bytes .../step3/img/phones/samsung-galaxy-tab.1.jpg | Bin 0 -> 22084 bytes .../step3/img/phones/samsung-galaxy-tab.2.jpg | Bin 0 -> 13036 bytes .../step3/img/phones/samsung-galaxy-tab.3.jpg | Bin 0 -> 18501 bytes .../step3/img/phones/samsung-galaxy-tab.4.jpg | Bin 0 -> 4102 bytes .../step3/img/phones/samsung-galaxy-tab.5.jpg | Bin 0 -> 8158 bytes .../step3/img/phones/samsung-galaxy-tab.6.jpg | Bin 0 -> 4553 bytes .../step3/img/phones/samsung-gem.0.jpg | Bin 0 -> 27422 bytes .../step3/img/phones/samsung-gem.1.jpg | Bin 0 -> 14059 bytes .../step3/img/phones/samsung-gem.2.jpg | Bin 0 -> 7065 bytes .../samsung-mesmerize-a-galaxy-s-phone.0.jpg | Bin 0 -> 28199 bytes .../samsung-mesmerize-a-galaxy-s-phone.1.jpg | Bin 0 -> 19068 bytes .../samsung-mesmerize-a-galaxy-s-phone.2.jpg | Bin 0 -> 5568 bytes .../samsung-mesmerize-a-galaxy-s-phone.3.jpg | Bin 0 -> 5865 bytes .../samsung-showcase-a-galaxy-s-phone.0.jpg | Bin 0 -> 28199 bytes .../samsung-showcase-a-galaxy-s-phone.1.jpg | Bin 0 -> 19068 bytes .../samsung-showcase-a-galaxy-s-phone.2.jpg | Bin 0 -> 5568 bytes .../step3/img/phones/samsung-transform.0.jpg | Bin 0 -> 26408 bytes .../step3/img/phones/samsung-transform.1.jpg | Bin 0 -> 7978 bytes .../step3/img/phones/samsung-transform.2.jpg | Bin 0 -> 7701 bytes .../step3/img/phones/samsung-transform.3.jpg | Bin 0 -> 36715 bytes .../step3/img/phones/samsung-transform.4.jpg | Bin 0 -> 21350 bytes .../step3/img/phones/sanyo-zio.0.jpg | Bin 0 -> 27210 bytes .../step3/img/phones/sanyo-zio.1.jpg | Bin 0 -> 11450 bytes .../step3/img/phones/sanyo-zio.2.jpg | Bin 0 -> 6830 bytes .../step3/img/phones/t-mobile-g2.0.jpg | Bin 0 -> 27371 bytes .../step3/img/phones/t-mobile-g2.1.jpg | Bin 0 -> 40158 bytes .../step3/img/phones/t-mobile-g2.2.jpg | Bin 0 -> 15013 bytes .../img/phones/t-mobile-mytouch-4g.0.jpg | Bin 0 -> 28678 bytes .../img/phones/t-mobile-mytouch-4g.1.jpg | Bin 0 -> 20667 bytes .../img/phones/t-mobile-mytouch-4g.2.jpg | Bin 0 -> 14216 bytes .../img/phones/t-mobile-mytouch-4g.3.jpg | Bin 0 -> 22725 bytes .../img/phones/t-mobile-mytouch-4g.4.jpg | Bin 0 -> 5761 bytes .../img/phones/t-mobile-mytouch-4g.5.jpg | Bin 0 -> 28678 bytes .../tdd-hands-on-lab/step3/index.html | 42 + .../tdd-hands-on-lab/step3/index.html~ | 42 + .../tdd-hands-on-lab/step3/js/app.js | 24 + .../tdd-hands-on-lab/step3/js/controllers.js | 13 + .../tdd-hands-on-lab/step3/phones/phones.txt | 155 + .../tdd-hands-on-lab/step3/test/conf.js | 8 + .../tdd-hands-on-lab/step3/test/e2e.js | 15 + .../step4-completed/.DS_Store | Bin 0 -> 10244 bytes .../step4-completed/img/.DS_Store | Bin 0 -> 6148 bytes .../step4-completed/img/.gitkeep | 0 .../step4-completed/index.html | 16 + .../step4-completed/js/app.js | 24 + .../step4-completed/js/controllers.js | 19 + .../partials/phone-detail.html | 1 + .../step4-completed/partials/phone-list.html | 27 + .../step4-completed/phones/phones.txt | 155 + .../step4-completed/test/conf.js | 8 + .../step4-completed/test/e2e.js | 13 + .../tdd-hands-on-lab/step4/.DS_Store | Bin 0 -> 6148 bytes .../tdd-hands-on-lab/step4/img/.DS_Store | Bin 0 -> 6148 bytes .../tdd-hands-on-lab/step4/img/.gitkeep | 0 .../tdd-hands-on-lab/step4/index.html | 16 + .../tdd-hands-on-lab/step4/js/app.js | 24 + .../tdd-hands-on-lab/step4/js/controllers.js | 19 + .../step4/partials/phone-detail.html | 1 + .../step4/partials/phone-list.html | 27 + .../tdd-hands-on-lab/step4/phones/phones.txt | 155 + .../tdd-hands-on-lab/step4/test/conf.js | 8 + .../tdd-hands-on-lab/step4/test/e2e.js | 20 + bonus/html5 test/tdd/.DS_Store | Bin 0 -> 14340 bytes bonus/html5 test/tdd/css/app.css | 84 + bonus/html5 test/tdd/ioc/$inject/.DS_Store | Bin 0 -> 6148 bytes bonus/html5 test/tdd/ioc/$inject/index.html | 16 + bonus/html5 test/tdd/ioc/$inject/js/app.js | 13 + .../tdd/ioc/$inject/js/controllers.js | 7 + bonus/html5 test/tdd/ioc/.DS_Store | Bin 0 -> 6148 bytes bonus/html5 test/tdd/ioc/implicit/index.html | 16 + bonus/html5 test/tdd/ioc/implicit/js/app.js | 13 + .../tdd/ioc/implicit/js/controllers.js | 5 + bonus/html5 test/tdd/ioc/inline/index.html | 15 + bonus/html5 test/tdd/ioc/inline/js/app.js | 17 + .../tdd/ioc/inline/js/controllers.js | 7 + bonus/html5 test/tdd/ioc/test-demo/.DS_Store | Bin 0 -> 6148 bytes .../tdd/ioc/test-demo/UnitTestRunner.html | 29 + bonus/html5 test/tdd/ioc/test-demo/index.html | 16 + bonus/html5 test/tdd/ioc/test-demo/js/app.js | 13 + .../tdd/ioc/test-demo/js/controllers.js | 5 + .../tdd/ioc/test-demo/test/controllersSpec.js | 31 + bonus/html5 test/tdd/lib/.DS_Store | Bin 0 -> 15364 bytes bonus/html5 test/tdd/lib/angular-animate.js | 1689 ++ .../html5 test/tdd/lib/angular-animate.min.js | 28 + .../tdd/lib/angular-animate.min.js.map | 8 + bonus/html5 test/tdd/lib/angular-cookies.js | 206 + .../html5 test/tdd/lib/angular-cookies.min.js | 8 + .../tdd/lib/angular-cookies.min.js.map | 8 + bonus/html5 test/tdd/lib/angular-csp.css | 24 + bonus/html5 test/tdd/lib/angular-loader.js | 414 + .../html5 test/tdd/lib/angular-loader.min.js | 9 + .../tdd/lib/angular-loader.min.js.map | 8 + bonus/html5 test/tdd/lib/angular-mocks.js | 2173 ++ bonus/html5 test/tdd/lib/angular-resource.js | 619 + .../tdd/lib/angular-resource.min.js | 13 + .../tdd/lib/angular-resource.min.js.map | 8 + bonus/html5 test/tdd/lib/angular-route.js | 925 + bonus/html5 test/tdd/lib/angular-route.min.js | 14 + .../tdd/lib/angular-route.min.js.map | 8 + bonus/html5 test/tdd/lib/angular-sanitize.js | 640 + .../tdd/lib/angular-sanitize.min.js | 15 + .../tdd/lib/angular-sanitize.min.js.map | 8 + bonus/html5 test/tdd/lib/angular-touch.js | 584 + bonus/html5 test/tdd/lib/angular-touch.min.js | 13 + .../tdd/lib/angular-touch.min.js.map | 8 + bonus/html5 test/tdd/lib/angular.js | 21883 ++++++++++++++++ bonus/html5 test/tdd/lib/angular.min.js | 214 + bonus/html5 test/tdd/lib/angular.min.js.map | 8 + bonus/html5 test/tdd/lib/errors.json | 1 + bonus/html5 test/tdd/lib/i18n/.DS_Store | Bin 0 -> 43012 bytes .../tdd/lib/i18n/angular-locale_af-na.js | 99 + .../tdd/lib/i18n/angular-locale_af-za.js | 99 + .../tdd/lib/i18n/angular-locale_af.js | 99 + .../tdd/lib/i18n/angular-locale_am-et.js | 99 + .../tdd/lib/i18n/angular-locale_am.js | 99 + .../tdd/lib/i18n/angular-locale_ar-001.js | 99 + .../tdd/lib/i18n/angular-locale_ar-ae.js | 99 + .../tdd/lib/i18n/angular-locale_ar-bh.js | 99 + .../tdd/lib/i18n/angular-locale_ar-dz.js | 99 + .../tdd/lib/i18n/angular-locale_ar-eg.js | 99 + .../tdd/lib/i18n/angular-locale_ar-iq.js | 99 + .../tdd/lib/i18n/angular-locale_ar-jo.js | 99 + .../tdd/lib/i18n/angular-locale_ar-kw.js | 99 + .../tdd/lib/i18n/angular-locale_ar-lb.js | 99 + .../tdd/lib/i18n/angular-locale_ar-ly.js | 99 + .../tdd/lib/i18n/angular-locale_ar-ma.js | 99 + .../tdd/lib/i18n/angular-locale_ar-om.js | 99 + .../tdd/lib/i18n/angular-locale_ar-qa.js | 99 + .../tdd/lib/i18n/angular-locale_ar-sa.js | 99 + .../tdd/lib/i18n/angular-locale_ar-sd.js | 99 + .../tdd/lib/i18n/angular-locale_ar-sy.js | 99 + .../tdd/lib/i18n/angular-locale_ar-tn.js | 99 + .../tdd/lib/i18n/angular-locale_ar-ye.js | 99 + .../tdd/lib/i18n/angular-locale_ar.js | 99 + .../tdd/lib/i18n/angular-locale_bg-bg.js | 99 + .../tdd/lib/i18n/angular-locale_bg.js | 99 + .../tdd/lib/i18n/angular-locale_bn-bd.js | 99 + .../tdd/lib/i18n/angular-locale_bn-in.js | 99 + .../tdd/lib/i18n/angular-locale_bn.js | 99 + .../tdd/lib/i18n/angular-locale_ca-ad.js | 99 + .../tdd/lib/i18n/angular-locale_ca-es.js | 99 + .../tdd/lib/i18n/angular-locale_ca.js | 99 + .../tdd/lib/i18n/angular-locale_cs-cz.js | 99 + .../tdd/lib/i18n/angular-locale_cs.js | 99 + .../tdd/lib/i18n/angular-locale_da-dk.js | 99 + .../tdd/lib/i18n/angular-locale_da.js | 99 + .../tdd/lib/i18n/angular-locale_de-at.js | 99 + .../tdd/lib/i18n/angular-locale_de-be.js | 99 + .../tdd/lib/i18n/angular-locale_de-ch.js | 99 + .../tdd/lib/i18n/angular-locale_de-de.js | 99 + .../tdd/lib/i18n/angular-locale_de-li.js | 99 + .../tdd/lib/i18n/angular-locale_de-lu.js | 99 + .../tdd/lib/i18n/angular-locale_de.js | 99 + .../tdd/lib/i18n/angular-locale_el-cy.js | 99 + .../tdd/lib/i18n/angular-locale_el-gr.js | 99 + .../tdd/lib/i18n/angular-locale_el.js | 99 + .../tdd/lib/i18n/angular-locale_en-as.js | 99 + .../tdd/lib/i18n/angular-locale_en-au.js | 99 + .../tdd/lib/i18n/angular-locale_en-bb.js | 99 + .../tdd/lib/i18n/angular-locale_en-be.js | 99 + .../tdd/lib/i18n/angular-locale_en-bm.js | 99 + .../tdd/lib/i18n/angular-locale_en-bw.js | 99 + .../tdd/lib/i18n/angular-locale_en-bz.js | 99 + .../tdd/lib/i18n/angular-locale_en-ca.js | 99 + .../tdd/lib/i18n/angular-locale_en-dsrt-us.js | 99 + .../tdd/lib/i18n/angular-locale_en-dsrt.js | 99 + .../tdd/lib/i18n/angular-locale_en-fm.js | 99 + .../tdd/lib/i18n/angular-locale_en-gb.js | 99 + .../tdd/lib/i18n/angular-locale_en-gu.js | 99 + .../tdd/lib/i18n/angular-locale_en-gy.js | 99 + .../tdd/lib/i18n/angular-locale_en-hk.js | 99 + .../tdd/lib/i18n/angular-locale_en-ie.js | 99 + .../tdd/lib/i18n/angular-locale_en-in.js | 99 + .../tdd/lib/i18n/angular-locale_en-iso.js | 99 + .../tdd/lib/i18n/angular-locale_en-jm.js | 99 + .../tdd/lib/i18n/angular-locale_en-mh.js | 99 + .../tdd/lib/i18n/angular-locale_en-mp.js | 99 + .../tdd/lib/i18n/angular-locale_en-mt.js | 99 + .../tdd/lib/i18n/angular-locale_en-mu.js | 99 + .../tdd/lib/i18n/angular-locale_en-na.js | 99 + .../tdd/lib/i18n/angular-locale_en-nz.js | 99 + .../tdd/lib/i18n/angular-locale_en-ph.js | 99 + .../tdd/lib/i18n/angular-locale_en-pk.js | 99 + .../tdd/lib/i18n/angular-locale_en-pr.js | 99 + .../tdd/lib/i18n/angular-locale_en-pw.js | 99 + .../tdd/lib/i18n/angular-locale_en-sg.js | 99 + .../tdd/lib/i18n/angular-locale_en-tc.js | 99 + .../tdd/lib/i18n/angular-locale_en-tt.js | 99 + .../tdd/lib/i18n/angular-locale_en-um.js | 99 + .../tdd/lib/i18n/angular-locale_en-us.js | 99 + .../tdd/lib/i18n/angular-locale_en-vg.js | 99 + .../tdd/lib/i18n/angular-locale_en-vi.js | 99 + .../tdd/lib/i18n/angular-locale_en-za.js | 99 + .../tdd/lib/i18n/angular-locale_en-zw.js | 99 + .../tdd/lib/i18n/angular-locale_en.js | 99 + .../tdd/lib/i18n/angular-locale_es-419.js | 99 + .../tdd/lib/i18n/angular-locale_es-ar.js | 99 + .../tdd/lib/i18n/angular-locale_es-bo.js | 99 + .../tdd/lib/i18n/angular-locale_es-cl.js | 99 + .../tdd/lib/i18n/angular-locale_es-co.js | 99 + .../tdd/lib/i18n/angular-locale_es-cr.js | 99 + .../tdd/lib/i18n/angular-locale_es-do.js | 99 + .../tdd/lib/i18n/angular-locale_es-ea.js | 99 + .../tdd/lib/i18n/angular-locale_es-ec.js | 99 + .../tdd/lib/i18n/angular-locale_es-es.js | 99 + .../tdd/lib/i18n/angular-locale_es-gq.js | 99 + .../tdd/lib/i18n/angular-locale_es-gt.js | 99 + .../tdd/lib/i18n/angular-locale_es-hn.js | 99 + .../tdd/lib/i18n/angular-locale_es-ic.js | 99 + .../tdd/lib/i18n/angular-locale_es-mx.js | 99 + .../tdd/lib/i18n/angular-locale_es-ni.js | 99 + .../tdd/lib/i18n/angular-locale_es-pa.js | 99 + .../tdd/lib/i18n/angular-locale_es-pe.js | 99 + .../tdd/lib/i18n/angular-locale_es-pr.js | 99 + .../tdd/lib/i18n/angular-locale_es-py.js | 99 + .../tdd/lib/i18n/angular-locale_es-sv.js | 99 + .../tdd/lib/i18n/angular-locale_es-us.js | 99 + .../tdd/lib/i18n/angular-locale_es-uy.js | 99 + .../tdd/lib/i18n/angular-locale_es-ve.js | 99 + .../tdd/lib/i18n/angular-locale_es.js | 99 + .../tdd/lib/i18n/angular-locale_et-ee.js | 99 + .../tdd/lib/i18n/angular-locale_et.js | 99 + .../tdd/lib/i18n/angular-locale_eu-es.js | 99 + .../tdd/lib/i18n/angular-locale_eu.js | 99 + .../tdd/lib/i18n/angular-locale_fa-af.js | 99 + .../tdd/lib/i18n/angular-locale_fa-ir.js | 99 + .../tdd/lib/i18n/angular-locale_fa.js | 99 + .../tdd/lib/i18n/angular-locale_fi-fi.js | 99 + .../tdd/lib/i18n/angular-locale_fi.js | 99 + .../tdd/lib/i18n/angular-locale_fil-ph.js | 99 + .../tdd/lib/i18n/angular-locale_fil.js | 99 + .../tdd/lib/i18n/angular-locale_fr-be.js | 99 + .../tdd/lib/i18n/angular-locale_fr-bf.js | 99 + .../tdd/lib/i18n/angular-locale_fr-bi.js | 99 + .../tdd/lib/i18n/angular-locale_fr-bj.js | 99 + .../tdd/lib/i18n/angular-locale_fr-bl.js | 99 + .../tdd/lib/i18n/angular-locale_fr-ca.js | 99 + .../tdd/lib/i18n/angular-locale_fr-cd.js | 99 + .../tdd/lib/i18n/angular-locale_fr-cf.js | 99 + .../tdd/lib/i18n/angular-locale_fr-cg.js | 99 + .../tdd/lib/i18n/angular-locale_fr-ch.js | 99 + .../tdd/lib/i18n/angular-locale_fr-ci.js | 99 + .../tdd/lib/i18n/angular-locale_fr-cm.js | 99 + .../tdd/lib/i18n/angular-locale_fr-dj.js | 99 + .../tdd/lib/i18n/angular-locale_fr-fr.js | 99 + .../tdd/lib/i18n/angular-locale_fr-ga.js | 99 + .../tdd/lib/i18n/angular-locale_fr-gf.js | 99 + .../tdd/lib/i18n/angular-locale_fr-gn.js | 99 + .../tdd/lib/i18n/angular-locale_fr-gp.js | 99 + .../tdd/lib/i18n/angular-locale_fr-gq.js | 99 + .../tdd/lib/i18n/angular-locale_fr-km.js | 99 + .../tdd/lib/i18n/angular-locale_fr-lu.js | 99 + .../tdd/lib/i18n/angular-locale_fr-mc.js | 99 + .../tdd/lib/i18n/angular-locale_fr-mf.js | 99 + .../tdd/lib/i18n/angular-locale_fr-mg.js | 99 + .../tdd/lib/i18n/angular-locale_fr-ml.js | 99 + .../tdd/lib/i18n/angular-locale_fr-mq.js | 99 + .../tdd/lib/i18n/angular-locale_fr-ne.js | 99 + .../tdd/lib/i18n/angular-locale_fr-re.js | 99 + .../tdd/lib/i18n/angular-locale_fr-rw.js | 99 + .../tdd/lib/i18n/angular-locale_fr-sn.js | 99 + .../tdd/lib/i18n/angular-locale_fr-td.js | 99 + .../tdd/lib/i18n/angular-locale_fr-tg.js | 99 + .../tdd/lib/i18n/angular-locale_fr-yt.js | 99 + .../tdd/lib/i18n/angular-locale_fr.js | 99 + .../tdd/lib/i18n/angular-locale_gl-es.js | 99 + .../tdd/lib/i18n/angular-locale_gl.js | 99 + .../tdd/lib/i18n/angular-locale_gsw-ch.js | 99 + .../tdd/lib/i18n/angular-locale_gsw.js | 99 + .../tdd/lib/i18n/angular-locale_gu-in.js | 99 + .../tdd/lib/i18n/angular-locale_gu.js | 99 + .../tdd/lib/i18n/angular-locale_he-il.js | 99 + .../tdd/lib/i18n/angular-locale_he.js | 99 + .../tdd/lib/i18n/angular-locale_hi-in.js | 99 + .../tdd/lib/i18n/angular-locale_hi.js | 99 + .../tdd/lib/i18n/angular-locale_hr-hr.js | 99 + .../tdd/lib/i18n/angular-locale_hr.js | 99 + .../tdd/lib/i18n/angular-locale_hu-hu.js | 99 + .../tdd/lib/i18n/angular-locale_hu.js | 99 + .../tdd/lib/i18n/angular-locale_id-id.js | 99 + .../tdd/lib/i18n/angular-locale_id.js | 99 + .../tdd/lib/i18n/angular-locale_in.js | 99 + .../tdd/lib/i18n/angular-locale_is-is.js | 99 + .../tdd/lib/i18n/angular-locale_is.js | 99 + .../tdd/lib/i18n/angular-locale_it-ch.js | 99 + .../tdd/lib/i18n/angular-locale_it-it.js | 99 + .../tdd/lib/i18n/angular-locale_it-sm.js | 99 + .../tdd/lib/i18n/angular-locale_it.js | 99 + .../tdd/lib/i18n/angular-locale_iw.js | 99 + .../tdd/lib/i18n/angular-locale_ja-jp.js | 99 + .../tdd/lib/i18n/angular-locale_ja.js | 99 + .../tdd/lib/i18n/angular-locale_kn-in.js | 99 + .../tdd/lib/i18n/angular-locale_kn.js | 99 + .../tdd/lib/i18n/angular-locale_ko-kr.js | 99 + .../tdd/lib/i18n/angular-locale_ko.js | 99 + .../tdd/lib/i18n/angular-locale_ln-cd.js | 99 + .../tdd/lib/i18n/angular-locale_ln-cg.js | 99 + .../tdd/lib/i18n/angular-locale_ln.js | 99 + .../tdd/lib/i18n/angular-locale_lt-lt.js | 99 + .../tdd/lib/i18n/angular-locale_lt.js | 99 + .../tdd/lib/i18n/angular-locale_lv-lv.js | 99 + .../tdd/lib/i18n/angular-locale_lv.js | 99 + .../tdd/lib/i18n/angular-locale_ml-in.js | 99 + .../tdd/lib/i18n/angular-locale_ml.js | 99 + .../tdd/lib/i18n/angular-locale_mr-in.js | 99 + .../tdd/lib/i18n/angular-locale_mr.js | 99 + .../tdd/lib/i18n/angular-locale_ms-bn.js | 99 + .../tdd/lib/i18n/angular-locale_ms-my.js | 99 + .../tdd/lib/i18n/angular-locale_ms.js | 99 + .../tdd/lib/i18n/angular-locale_mt-mt.js | 99 + .../tdd/lib/i18n/angular-locale_mt.js | 99 + .../tdd/lib/i18n/angular-locale_nl-aw.js | 99 + .../tdd/lib/i18n/angular-locale_nl-be.js | 99 + .../tdd/lib/i18n/angular-locale_nl-cw.js | 99 + .../tdd/lib/i18n/angular-locale_nl-nl.js | 99 + .../tdd/lib/i18n/angular-locale_nl-sx.js | 99 + .../tdd/lib/i18n/angular-locale_nl.js | 99 + .../tdd/lib/i18n/angular-locale_no.js | 99 + .../tdd/lib/i18n/angular-locale_or-in.js | 99 + .../tdd/lib/i18n/angular-locale_or.js | 99 + .../tdd/lib/i18n/angular-locale_pl-pl.js | 99 + .../tdd/lib/i18n/angular-locale_pl.js | 99 + .../tdd/lib/i18n/angular-locale_pt-ao.js | 99 + .../tdd/lib/i18n/angular-locale_pt-br.js | 99 + .../tdd/lib/i18n/angular-locale_pt-gw.js | 99 + .../tdd/lib/i18n/angular-locale_pt-mz.js | 99 + .../tdd/lib/i18n/angular-locale_pt-pt.js | 99 + .../tdd/lib/i18n/angular-locale_pt-st.js | 99 + .../tdd/lib/i18n/angular-locale_pt.js | 99 + .../tdd/lib/i18n/angular-locale_ro-md.js | 99 + .../tdd/lib/i18n/angular-locale_ro-ro.js | 99 + .../tdd/lib/i18n/angular-locale_ro.js | 99 + .../tdd/lib/i18n/angular-locale_ru-md.js | 99 + .../tdd/lib/i18n/angular-locale_ru-ru.js | 99 + .../tdd/lib/i18n/angular-locale_ru-ua.js | 99 + .../tdd/lib/i18n/angular-locale_ru.js | 99 + .../tdd/lib/i18n/angular-locale_sk-sk.js | 99 + .../tdd/lib/i18n/angular-locale_sk.js | 99 + .../tdd/lib/i18n/angular-locale_sl-si.js | 99 + .../tdd/lib/i18n/angular-locale_sl.js | 99 + .../tdd/lib/i18n/angular-locale_sq-al.js | 99 + .../tdd/lib/i18n/angular-locale_sq.js | 99 + .../tdd/lib/i18n/angular-locale_sr-cyrl-ba.js | 99 + .../tdd/lib/i18n/angular-locale_sr-cyrl-me.js | 99 + .../tdd/lib/i18n/angular-locale_sr-cyrl-rs.js | 99 + .../tdd/lib/i18n/angular-locale_sr-cyrl.js | 99 + .../tdd/lib/i18n/angular-locale_sr-latn-ba.js | 99 + .../tdd/lib/i18n/angular-locale_sr-latn-me.js | 99 + .../tdd/lib/i18n/angular-locale_sr-latn-rs.js | 99 + .../tdd/lib/i18n/angular-locale_sr-latn.js | 99 + .../tdd/lib/i18n/angular-locale_sr.js | 99 + .../tdd/lib/i18n/angular-locale_sv-fi.js | 99 + .../tdd/lib/i18n/angular-locale_sv-se.js | 99 + .../tdd/lib/i18n/angular-locale_sv.js | 99 + .../tdd/lib/i18n/angular-locale_sw-ke.js | 99 + .../tdd/lib/i18n/angular-locale_sw-tz.js | 99 + .../tdd/lib/i18n/angular-locale_sw.js | 99 + .../tdd/lib/i18n/angular-locale_ta-in.js | 99 + .../tdd/lib/i18n/angular-locale_ta-lk.js | 99 + .../tdd/lib/i18n/angular-locale_ta.js | 99 + .../tdd/lib/i18n/angular-locale_te-in.js | 99 + .../tdd/lib/i18n/angular-locale_te.js | 99 + .../tdd/lib/i18n/angular-locale_th-th.js | 99 + .../tdd/lib/i18n/angular-locale_th.js | 99 + .../tdd/lib/i18n/angular-locale_tl.js | 99 + .../tdd/lib/i18n/angular-locale_tr-tr.js | 99 + .../tdd/lib/i18n/angular-locale_tr.js | 99 + .../tdd/lib/i18n/angular-locale_uk-ua.js | 99 + .../tdd/lib/i18n/angular-locale_uk.js | 99 + .../tdd/lib/i18n/angular-locale_ur-in.js | 99 + .../tdd/lib/i18n/angular-locale_ur-pk.js | 99 + .../tdd/lib/i18n/angular-locale_ur.js | 99 + .../tdd/lib/i18n/angular-locale_vi-vn.js | 99 + .../tdd/lib/i18n/angular-locale_vi.js | 99 + .../tdd/lib/i18n/angular-locale_zh-cn.js | 99 + .../tdd/lib/i18n/angular-locale_zh-hans-cn.js | 99 + .../tdd/lib/i18n/angular-locale_zh-hans-hk.js | 99 + .../tdd/lib/i18n/angular-locale_zh-hans-mo.js | 99 + .../tdd/lib/i18n/angular-locale_zh-hans-sg.js | 99 + .../tdd/lib/i18n/angular-locale_zh-hans.js | 99 + .../tdd/lib/i18n/angular-locale_zh-hant-hk.js | 99 + .../tdd/lib/i18n/angular-locale_zh-hant-mo.js | 99 + .../tdd/lib/i18n/angular-locale_zh-hant-tw.js | 99 + .../tdd/lib/i18n/angular-locale_zh-hant.js | 99 + .../tdd/lib/i18n/angular-locale_zh-hk.js | 99 + .../tdd/lib/i18n/angular-locale_zh-tw.js | 99 + .../tdd/lib/i18n/angular-locale_zh.js | 99 + .../tdd/lib/i18n/angular-locale_zu-za.js | 99 + .../tdd/lib/i18n/angular-locale_zu.js | 99 + bonus/html5 test/tdd/lib/version.json | 1 + bonus/html5 test/tdd/lib/version.txt | 1 + bonus/html5 test/tdd/step0/.DS_Store | Bin 0 -> 6148 bytes bonus/html5 test/tdd/step0/index.html | 20 + bonus/html5 test/tdd/step0/js/controller.js | 19 + bonus/html5 test/tdd/step0/js/controller.js~ | 15 + bonus/html5 test/tdd/step0/karma.conf.js | 69 + bonus/html5 test/tdd/step0/test.html | 14 + .../tdd/step0/test/controllerSpec.js | 12 + .../tdd/step0/test/controllerSpec.js~ | 12 + bonus/html5 test/tdd/step1/.DS_Store | Bin 0 -> 6148 bytes .../html5 test/tdd/step1/UnitTestRunner.html | 25 + bonus/html5 test/tdd/step1/index.html | 42 + bonus/html5 test/tdd/step1/js/controllers.js | 23 + bonus/html5 test/tdd/step1/test/.DS_Store | Bin 0 -> 6148 bytes bonus/html5 test/tdd/step1/test/conf.js | 8 + .../tdd/step1/test/controllersSpec.js | 37 + bonus/html5 test/tdd/step1/test/e2espec.js | 19 + bonus/html5 test/tdd/step1/test/e2espec.js~ | 19 + bonus/html5 test/tdd/step2/.DS_Store | Bin 0 -> 6148 bytes bonus/html5 test/tdd/step2/index.html | 40 + bonus/html5 test/tdd/step2/js/controllers.js | 13 + bonus/html5 test/tdd/step2/karma.conf.js | 69 + bonus/html5 test/tdd/step2/phones/phones.txt | 155 + .../tdd/step2/test/controllersSpec.js | 28 + bonus/html5 test/tdd/step3/.DS_Store | Bin 0 -> 6148 bytes bonus/html5 test/tdd/step3/img/.DS_Store | Bin 0 -> 6148 bytes bonus/html5 test/tdd/step3/img/.gitkeep | 0 .../step3/img/glyphicons-halflings-white.png | Bin 0 -> 8777 bytes .../tdd/step3/img/glyphicons-halflings.png | Bin 0 -> 12601 bytes .../tdd/step3/img/phones/dell-streak-7.0.jpg | Bin 0 -> 23086 bytes .../tdd/step3/img/phones/dell-streak-7.1.jpg | Bin 0 -> 23269 bytes .../tdd/step3/img/phones/dell-streak-7.2.jpg | Bin 0 -> 4686 bytes .../tdd/step3/img/phones/dell-streak-7.3.jpg | Bin 0 -> 28319 bytes .../tdd/step3/img/phones/dell-streak-7.4.jpg | Bin 0 -> 28541 bytes .../tdd/step3/img/phones/dell-venue.0.jpg | Bin 0 -> 22965 bytes .../tdd/step3/img/phones/dell-venue.1.jpg | Bin 0 -> 6872 bytes .../tdd/step3/img/phones/dell-venue.2.jpg | Bin 0 -> 11845 bytes .../tdd/step3/img/phones/dell-venue.3.jpg | Bin 0 -> 12845 bytes .../tdd/step3/img/phones/dell-venue.4.jpg | Bin 0 -> 9446 bytes .../tdd/step3/img/phones/dell-venue.5.jpg | Bin 0 -> 9407 bytes .../phones/droid-2-global-by-motorola.0.jpg | Bin 0 -> 16729 bytes .../phones/droid-2-global-by-motorola.1.jpg | Bin 0 -> 28093 bytes .../phones/droid-2-global-by-motorola.2.jpg | Bin 0 -> 33910 bytes .../img/phones/droid-pro-by-motorola.0.jpg | Bin 0 -> 38713 bytes .../img/phones/droid-pro-by-motorola.1.jpg | Bin 0 -> 28440 bytes .../tdd/step3/img/phones/lg-axis.0.jpg | Bin 0 -> 40932 bytes .../tdd/step3/img/phones/lg-axis.1.jpg | Bin 0 -> 10533 bytes .../tdd/step3/img/phones/lg-axis.2.jpg | Bin 0 -> 7826 bytes .../step3/img/phones/motorola-atrix-4g.0.jpg | Bin 0 -> 23174 bytes .../step3/img/phones/motorola-atrix-4g.1.jpg | Bin 0 -> 16530 bytes .../step3/img/phones/motorola-atrix-4g.2.jpg | Bin 0 -> 23788 bytes .../step3/img/phones/motorola-atrix-4g.3.jpg | Bin 0 -> 19553 bytes .../phones/motorola-bravo-with-motoblur.0.jpg | Bin 0 -> 28478 bytes .../phones/motorola-bravo-with-motoblur.1.jpg | Bin 0 -> 17522 bytes .../phones/motorola-bravo-with-motoblur.2.jpg | Bin 0 -> 40296 bytes .../phones/motorola-charm-with-motoblur.0.jpg | Bin 0 -> 40906 bytes .../phones/motorola-charm-with-motoblur.1.jpg | Bin 0 -> 19570 bytes .../phones/motorola-charm-with-motoblur.2.jpg | Bin 0 -> 23459 bytes .../phones/motorola-defy-with-motoblur.0.jpg | Bin 0 -> 31971 bytes .../phones/motorola-defy-with-motoblur.1.jpg | Bin 0 -> 27619 bytes .../phones/motorola-defy-with-motoblur.2.jpg | Bin 0 -> 17334 bytes .../img/phones/motorola-xoom-with-wi-fi.0.jpg | Bin 0 -> 34430 bytes .../img/phones/motorola-xoom-with-wi-fi.1.jpg | Bin 0 -> 28183 bytes .../img/phones/motorola-xoom-with-wi-fi.2.jpg | Bin 0 -> 4077 bytes .../img/phones/motorola-xoom-with-wi-fi.3.jpg | Bin 0 -> 32370 bytes .../img/phones/motorola-xoom-with-wi-fi.4.jpg | Bin 0 -> 15111 bytes .../img/phones/motorola-xoom-with-wi-fi.5.jpg | Bin 0 -> 14687 bytes .../tdd/step3/img/phones/motorola-xoom.0.jpg | Bin 0 -> 26175 bytes .../tdd/step3/img/phones/motorola-xoom.1.jpg | Bin 0 -> 23398 bytes .../tdd/step3/img/phones/motorola-xoom.2.jpg | Bin 0 -> 23686 bytes .../tdd/step3/img/phones/nexus-s.0.jpg | Bin 0 -> 19005 bytes .../tdd/step3/img/phones/nexus-s.1.jpg | Bin 0 -> 16354 bytes .../tdd/step3/img/phones/nexus-s.2.jpg | Bin 0 -> 6231 bytes .../tdd/step3/img/phones/nexus-s.3.jpg | Bin 0 -> 21118 bytes .../step3/img/phones/samsung-galaxy-tab.0.jpg | Bin 0 -> 28506 bytes .../step3/img/phones/samsung-galaxy-tab.1.jpg | Bin 0 -> 22084 bytes .../step3/img/phones/samsung-galaxy-tab.2.jpg | Bin 0 -> 13036 bytes .../step3/img/phones/samsung-galaxy-tab.3.jpg | Bin 0 -> 18501 bytes .../step3/img/phones/samsung-galaxy-tab.4.jpg | Bin 0 -> 4102 bytes .../step3/img/phones/samsung-galaxy-tab.5.jpg | Bin 0 -> 8158 bytes .../step3/img/phones/samsung-galaxy-tab.6.jpg | Bin 0 -> 4553 bytes .../tdd/step3/img/phones/samsung-gem.0.jpg | Bin 0 -> 27422 bytes .../tdd/step3/img/phones/samsung-gem.1.jpg | Bin 0 -> 14059 bytes .../tdd/step3/img/phones/samsung-gem.2.jpg | Bin 0 -> 7065 bytes .../samsung-mesmerize-a-galaxy-s-phone.0.jpg | Bin 0 -> 28199 bytes .../samsung-mesmerize-a-galaxy-s-phone.1.jpg | Bin 0 -> 19068 bytes .../samsung-mesmerize-a-galaxy-s-phone.2.jpg | Bin 0 -> 5568 bytes .../samsung-mesmerize-a-galaxy-s-phone.3.jpg | Bin 0 -> 5865 bytes .../samsung-showcase-a-galaxy-s-phone.0.jpg | Bin 0 -> 28199 bytes .../samsung-showcase-a-galaxy-s-phone.1.jpg | Bin 0 -> 19068 bytes .../samsung-showcase-a-galaxy-s-phone.2.jpg | Bin 0 -> 5568 bytes .../step3/img/phones/samsung-transform.0.jpg | Bin 0 -> 26408 bytes .../step3/img/phones/samsung-transform.1.jpg | Bin 0 -> 7978 bytes .../step3/img/phones/samsung-transform.2.jpg | Bin 0 -> 7701 bytes .../step3/img/phones/samsung-transform.3.jpg | Bin 0 -> 36715 bytes .../step3/img/phones/samsung-transform.4.jpg | Bin 0 -> 21350 bytes .../tdd/step3/img/phones/sanyo-zio.0.jpg | Bin 0 -> 27210 bytes .../tdd/step3/img/phones/sanyo-zio.1.jpg | Bin 0 -> 11450 bytes .../tdd/step3/img/phones/sanyo-zio.2.jpg | Bin 0 -> 6830 bytes .../tdd/step3/img/phones/t-mobile-g2.0.jpg | Bin 0 -> 27371 bytes .../tdd/step3/img/phones/t-mobile-g2.1.jpg | Bin 0 -> 40158 bytes .../tdd/step3/img/phones/t-mobile-g2.2.jpg | Bin 0 -> 15013 bytes .../img/phones/t-mobile-mytouch-4g.0.jpg | Bin 0 -> 28678 bytes .../img/phones/t-mobile-mytouch-4g.1.jpg | Bin 0 -> 20667 bytes .../img/phones/t-mobile-mytouch-4g.2.jpg | Bin 0 -> 14216 bytes .../img/phones/t-mobile-mytouch-4g.3.jpg | Bin 0 -> 22725 bytes .../img/phones/t-mobile-mytouch-4g.4.jpg | Bin 0 -> 5761 bytes .../img/phones/t-mobile-mytouch-4g.5.jpg | Bin 0 -> 28678 bytes bonus/html5 test/tdd/step3/index.html | 41 + bonus/html5 test/tdd/step3/js/controllers.js | 13 + bonus/html5 test/tdd/step3/phones/phones.txt | 155 + bonus/html5 test/tdd/step3/test/conf.js | 8 + bonus/html5 test/tdd/step3/test/e2e.js | 15 + bonus/html5 test/tdd/step4/.DS_Store | Bin 0 -> 8196 bytes bonus/html5 test/tdd/step4/img/.DS_Store | Bin 0 -> 6148 bytes bonus/html5 test/tdd/step4/img/.gitkeep | 0 bonus/html5 test/tdd/step4/index.html | 16 + bonus/html5 test/tdd/step4/js/.DS_Store | Bin 0 -> 6148 bytes bonus/html5 test/tdd/step4/js/app.js | 24 + bonus/html5 test/tdd/step4/js/controllers.js | 19 + bonus/html5 test/tdd/step4/partials/.DS_Store | Bin 0 -> 6148 bytes .../tdd/step4/partials/phone-detail.html | 1 + .../tdd/step4/partials/phone-list.html | 27 + bonus/html5 test/tdd/step4/phones/phones.txt | 155 + bonus/html5 test/tdd/step4/test/conf.js | 8 + bonus/html5 test/tdd/step4/test/e2e.js | 20 + bonus/html5 test/tdd/step5/.DS_Store | Bin 0 -> 8196 bytes bonus/html5 test/tdd/step5/img/.DS_Store | Bin 0 -> 6148 bytes bonus/html5 test/tdd/step5/img/.gitkeep | 0 bonus/html5 test/tdd/step5/index.html | 17 + bonus/html5 test/tdd/step5/js/.DS_Store | Bin 0 -> 6148 bytes bonus/html5 test/tdd/step5/js/app.js | 25 + bonus/html5 test/tdd/step5/js/controllers.js | 30 + bonus/html5 test/tdd/step5/js/controllers.js~ | 31 + bonus/html5 test/tdd/step5/js/filter.js | 5 + bonus/html5 test/tdd/step5/karma.conf.js | 70 + bonus/html5 test/tdd/step5/partials/.DS_Store | Bin 0 -> 6148 bytes .../tdd/step5/partials/phone-detail.html | 113 + .../tdd/step5/partials/phone-list.html | 27 + .../tdd/step5/phones/dell-streak-7.txt | 64 + .../tdd/step5/phones/dell-venue.txt | 67 + .../phones/droid-2-global-by-motorola.txt | 62 + .../step5/phones/droid-pro-by-motorola.txt | 61 + bonus/html5 test/tdd/step5/phones/lg-axis.txt | 62 + .../tdd/step5/phones/motorola-atrix-4g.txt | 62 + .../phones/motorola-bravo-with-motoblur.txt | 61 + .../phones/motorola-charm-with-motoblur.txt | 62 + .../phones/motorola-defy-with-motoblur.txt | 64 + .../step5/phones/motorola-xoom-with-wi-fi.txt | 65 + .../tdd/step5/phones/motorola-xoom.txt | 62 + bonus/html5 test/tdd/step5/phones/nexus-s.txt | 69 + bonus/html5 test/tdd/step5/phones/phones.txt | 155 + .../tdd/step5/phones/samsung-galaxy-tab.txt | 69 + .../tdd/step5/phones/samsung-gem.txt | 61 + .../samsung-mesmerize-a-galaxy-s-phone.txt | 63 + .../samsung-showcase-a-galaxy-s-phone.txt | 62 + .../tdd/step5/phones/samsung-transform.txt | 64 + .../html5 test/tdd/step5/phones/sanyo-zio.txt | 61 + .../tdd/step5/phones/t-mobile-g2.txt | 62 + .../tdd/step5/phones/t-mobile-mytouch-4g.txt | 65 + bonus/html5 test/tdd/step5/test/.DS_Store | Bin 0 -> 6148 bytes bonus/html5 test/tdd/step5/test/conf.js | 8 + .../tdd/step5/test/controllerSpec.js | 22 + bonus/html5 test/tdd/step5/test/e2e.js | 25 + bonus/html5 test/tdd/step6-cc/.DS_Store | Bin 0 -> 8196 bytes .../tdd/step6-cc/coverage/.DS_Store | Bin 0 -> 6148 bytes .../Chrome 24.0.1312 (Linux)/.DS_Store | Bin 0 -> 6148 bytes .../Chrome 24.0.1312 (Linux)/index.html | 350 + .../js/controllers.js.html | 370 + .../Chrome 24.0.1312 (Linux)/js/index.html | 350 + .../Chrome 24.0.1312 (Linux)/prettify.css | 1 + .../Chrome 24.0.1312 (Linux)/prettify.js | 1 + bonus/html5 test/tdd/step6-cc/index.html | 40 + .../html5 test/tdd/step6-cc/js/controllers.js | 17 + bonus/html5 test/tdd/step6-cc/karma.conf.js | 77 + .../html5 test/tdd/step6-cc/phones/phones.txt | 155 + .../tdd/step6-cc/test/controllersSpec.js | 28 + .../tdd/step6-cc/test/controllersSpec.js~ | 28 + bonus/html5 test/tdd/step6/.DS_Store | Bin 0 -> 8196 bytes bonus/html5 test/tdd/step6/img/.DS_Store | Bin 0 -> 6148 bytes bonus/html5 test/tdd/step6/img/.gitkeep | 0 bonus/html5 test/tdd/step6/index.html | 19 + bonus/html5 test/tdd/step6/js/.DS_Store | Bin 0 -> 6148 bytes bonus/html5 test/tdd/step6/js/app.js | 26 + bonus/html5 test/tdd/step6/js/controllers.js | 25 + bonus/html5 test/tdd/step6/js/filter.js | 5 + bonus/html5 test/tdd/step6/js/services.js | 6 + bonus/html5 test/tdd/step6/karma.conf.js | 70 + bonus/html5 test/tdd/step6/partials/.DS_Store | Bin 0 -> 6148 bytes .../tdd/step6/partials/phone-detail.html | 113 + .../tdd/step6/partials/phone-list.html | 27 + .../tdd/step6/phones/dell-streak-7.txt | 64 + .../tdd/step6/phones/dell-venue.txt | 67 + .../phones/droid-2-global-by-motorola.txt | 62 + .../step6/phones/droid-pro-by-motorola.txt | 61 + bonus/html5 test/tdd/step6/phones/lg-axis.txt | 62 + .../tdd/step6/phones/motorola-atrix-4g.txt | 62 + .../phones/motorola-bravo-with-motoblur.txt | 61 + .../phones/motorola-charm-with-motoblur.txt | 62 + .../phones/motorola-defy-with-motoblur.txt | 64 + .../step6/phones/motorola-xoom-with-wi-fi.txt | 65 + .../tdd/step6/phones/motorola-xoom.txt | 62 + bonus/html5 test/tdd/step6/phones/nexus-s.txt | 69 + bonus/html5 test/tdd/step6/phones/phones.txt | 155 + .../tdd/step6/phones/samsung-galaxy-tab.txt | 69 + .../tdd/step6/phones/samsung-gem.txt | 61 + .../samsung-mesmerize-a-galaxy-s-phone.txt | 63 + .../samsung-showcase-a-galaxy-s-phone.txt | 62 + .../tdd/step6/phones/samsung-transform.txt | 64 + .../html5 test/tdd/step6/phones/sanyo-zio.txt | 61 + .../tdd/step6/phones/t-mobile-g2.txt | 62 + .../tdd/step6/phones/t-mobile-mytouch-4g.txt | 65 + .../tdd/step6/test/controllersSpec.js | 67 + bonus/html5 test/tdd/testlib/.DS_Store | Bin 0 -> 6148 bytes .../tdd/testlib/jasmine-2.0.1/boot.js | 181 + .../tdd/testlib/jasmine-2.0.1/console.js | 165 + .../tdd/testlib/jasmine-2.0.1/jasmine-html.js | 390 + .../tdd/testlib/jasmine-2.0.1/jasmine.css | 59 + .../tdd/testlib/jasmine-2.0.1/jasmine.js | 2516 ++ .../testlib/jasmine-2.0.1/jasmine_favicon.png | Bin 0 -> 1486 bytes bonus/hybrid-app-overview/.DS_Store | Bin 0 -> 6148 bytes .../hybrid-app-overview/WebViewDemo/.DS_Store | Bin 0 -> 6148 bytes .../WebViewDemo/AndroidManifest.xml | 26 + .../WebViewDemo/assets/content.html | 10 + .../WebViewDemo/assets/help.html | 14 + .../WebViewDemo/proguard-project.txt | 20 + .../WebViewDemo/project.properties | 14 + .../res/drawable-hdpi/ic_action_search.png | Bin 0 -> 3120 bytes .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 9397 bytes .../res/drawable-mdpi/ic_action_search.png | Bin 0 -> 3030 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 5237 bytes .../res/drawable-xhdpi/ic_action_search.png | Bin 0 -> 3199 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 14383 bytes .../WebViewDemo/res/layout/activity_main.xml | 30 + .../WebViewDemo/res/menu/activity_main.xml | 6 + .../WebViewDemo/res/values-v11/styles.xml | 5 + .../WebViewDemo/res/values-v14/styles.xml | 5 + .../WebViewDemo/res/values/strings.xml | 8 + .../WebViewDemo/res/values/styles.xml | 5 + .../webviewdemo/JavaScriptBridge.java | 16 + .../chapter7/webviewdemo/MainActivity.java | 47 + bonus/ios/.DS_Store | Bin 0 -> 10244 bytes bonus/ios/AutomationExample/.gitignore | 7 + bonus/ios/AutomationExample/.travis.yml | 2 + .../project.pbxproj | 294 + .../AutomationExample/AUTAppDelegate.h | 15 + .../AutomationExample/AUTAppDelegate.m | 21 + .../AUTDetailViewController.h | 17 + .../AUTDetailViewController.m | 60 + .../AUTMasterViewController.h | 13 + .../AUTMasterViewController.m | 32 + .../AutomationExample-Info.plist | 40 + .../AutomationExample-Prefix.pch | 14 + .../en.lproj/InfoPlist.strings | 2 + .../en.lproj/MainStoryboard.storyboard | 151 + .../AutomationExample/main.m | 18 + .../ios/AutomationExample/Default-568h@2x.png | Bin 0 -> 18594 bytes bonus/ios/AutomationExample/LICENSE | 19 + bonus/ios/AutomationExample/README.markdown | 30 + .../UIAutomationTemplate.tracetemplate | Bin 0 -> 3962 bytes .../AutomationExample/automation_script.js | 17 + bonus/ios/AutomationExample/env.js | 47 + bonus/ios/AutomationExample/run_automation.sh | 66 + bonus/ios/AutomationExample/unix_instruments | 92 + bonus/ios/CodeCoverage/.gitignore | 7 + bonus/ios/CodeCoverage/.travis.yml | 2 + .../project.pbxproj | 335 + .../AutomationExample/AUTAppDelegate.h | 15 + .../AutomationExample/AUTAppDelegate.m | 30 + .../AUTDetailViewController.h | 17 + .../AUTDetailViewController.m | 60 + .../AUTMasterViewController.h | 13 + .../AUTMasterViewController.m | 32 + .../AutomationExample-Info.plist | 40 + .../AutomationExample-Prefix.pch | 14 + .../en.lproj/InfoPlist.strings | 2 + .../en.lproj/MainStoryboard.storyboard | 149 + .../ios/CodeCoverage/AutomationExample/main.m | 18 + bonus/ios/CodeCoverage/Default-568h@2x.png | Bin 0 -> 18594 bytes bonus/ios/CodeCoverage/LICENSE | 19 + bonus/ios/CodeCoverage/README.markdown | 30 + .../UIAutomationTemplate.tracetemplate | Bin 0 -> 3962 bytes .../ios/CodeCoverage/XcodeCoverage/.gitignore | 1 + .../CodeCoverage/XcodeCoverage/LICENSE.txt | 21 + .../ios/CodeCoverage/XcodeCoverage/README.md | 56 + bonus/ios/CodeCoverage/XcodeCoverage/cleancov | 11 + .../ios/CodeCoverage/XcodeCoverage/envcov.sh | 20 + .../ios/CodeCoverage/XcodeCoverage/envcov.sh~ | 20 + .../CodeCoverage/XcodeCoverage/exportenv.sh | 8 + bonus/ios/CodeCoverage/XcodeCoverage/getcov | 49 + .../XcodeCoverage/lcov-1.10/COPYING | 339 + .../XcodeCoverage/lcov-1.10/bin/genhtml | 5799 ++++ .../XcodeCoverage/lcov-1.10/bin/geninfo | 3657 +++ .../XcodeCoverage/lcov-1.10/bin/lcov | 4303 +++ .../XcodeCoverage/llvm-cov-wrapper.sh | 13 + .../XcodeCoverage/run_code_coverage_post.sh | 15 + bonus/ios/CodeCoverage/automation_script.js | 17 + bonus/ios/CodeCoverage/env.js | 47 + bonus/ios/CodeCoverage/run_automation.sh | 66 + bonus/ios/CodeCoverage/unix_instruments | 92 + bonus/ios/XcodeCoverage/.DS_Store | Bin 0 -> 6148 bytes bonus/ios/XcodeCoverage/.gitignore | 1 + bonus/ios/XcodeCoverage/LICENSE.txt | 21 + bonus/ios/XcodeCoverage/README.md | 56 + bonus/ios/XcodeCoverage/cleancov | 11 + bonus/ios/XcodeCoverage/envcov.sh | 20 + bonus/ios/XcodeCoverage/exportenv.sh | 8 + bonus/ios/XcodeCoverage/getcov | 49 + bonus/ios/XcodeCoverage/lcov-1.10/.DS_Store | Bin 0 -> 6148 bytes bonus/ios/XcodeCoverage/lcov-1.10/COPYING | 339 + bonus/ios/XcodeCoverage/lcov-1.10/bin/genhtml | 5799 ++++ bonus/ios/XcodeCoverage/lcov-1.10/bin/geninfo | 3657 +++ bonus/ios/XcodeCoverage/lcov-1.10/bin/lcov | 4303 +++ bonus/ios/XcodeCoverage/llvm-cov-wrapper.sh | 13 + .../XcodeCoverage/run_code_coverage_post.sh | 15 + 1256 files changed, 186587 insertions(+) create mode 100644 bonus/.DS_Store create mode 100644 bonus/android test/.DS_Store create mode 100644 bonus/android test/android-basic/.DS_Store create mode 100644 bonus/android test/android-basic/first-demo/.DS_Store create mode 100644 bonus/android test/android-basic/first-demo/.classpath create mode 100644 bonus/android test/android-basic/first-demo/.gitignore create mode 100644 bonus/android test/android-basic/first-demo/.project create mode 100644 bonus/android test/android-basic/first-demo/.settings/org.eclipse.jdt.core.prefs create mode 100644 bonus/android test/android-basic/first-demo/AndroidManifest.xml create mode 100644 bonus/android test/android-basic/first-demo/ic_launcher-web.png create mode 100644 bonus/android test/android-basic/first-demo/proguard-project.txt create mode 100644 bonus/android test/android-basic/first-demo/project.properties create mode 100644 bonus/android test/android-basic/first-demo/res/.DS_Store create mode 100644 bonus/android test/android-basic/first-demo/res/drawable-hdpi/ic_launcher.png create mode 100644 bonus/android test/android-basic/first-demo/res/drawable-mdpi/ic_launcher.png create mode 100644 bonus/android test/android-basic/first-demo/res/drawable-xhdpi/ic_launcher.png create mode 100644 bonus/android test/android-basic/first-demo/res/drawable-xxhdpi/ic_launcher.png create mode 100644 bonus/android test/android-basic/first-demo/res/layout/activity_main.xml create mode 100644 bonus/android test/android-basic/first-demo/res/menu/main.xml create mode 100644 bonus/android test/android-basic/first-demo/res/values-v11/styles.xml create mode 100644 bonus/android test/android-basic/first-demo/res/values-v14/styles.xml create mode 100644 bonus/android test/android-basic/first-demo/res/values-w820dp/dimens.xml create mode 100644 bonus/android test/android-basic/first-demo/res/values/dimens.xml create mode 100644 bonus/android test/android-basic/first-demo/res/values/strings.xml create mode 100644 bonus/android test/android-basic/first-demo/res/values/styles.xml create mode 100644 bonus/android test/android-basic/first-demo/src/.DS_Store create mode 100644 bonus/android test/android-basic/first-demo/src/com/.DS_Store create mode 100644 bonus/android test/android-basic/first-demo/src/com/example/.DS_Store create mode 100644 bonus/android test/android-basic/first-demo/src/com/example/demo/MainActivity.java create mode 100644 bonus/android test/ant-code-coverage-demo/.DS_Store create mode 100755 bonus/android test/ant-code-coverage-demo/.classpath create mode 100755 bonus/android test/ant-code-coverage-demo/.project create mode 100755 bonus/android test/ant-code-coverage-demo/.settings/org.eclipse.ltk.core.refactoring.prefs create mode 100755 bonus/android test/ant-code-coverage-demo/AndroidManifest.xml create mode 100644 bonus/android test/ant-code-coverage-demo/bin/AndroidManifest.xml create mode 100644 bonus/android test/ant-code-coverage-demo/bin/AndroidManifest.xml.d create mode 100644 bonus/android test/ant-code-coverage-demo/bin/build.prop create mode 100644 bonus/android test/ant-code-coverage-demo/bin/chapter1-debug-unaligned.apk create mode 100644 bonus/android test/ant-code-coverage-demo/bin/chapter1-debug-unaligned.apk.d create mode 100644 bonus/android test/ant-code-coverage-demo/bin/chapter1-debug.apk create mode 100644 bonus/android test/ant-code-coverage-demo/bin/chapter1-instrumented-unaligned.apk create mode 100644 bonus/android test/ant-code-coverage-demo/bin/chapter1-instrumented-unaligned.apk.d create mode 100644 bonus/android test/ant-code-coverage-demo/bin/chapter1-instrumented.apk create mode 100644 bonus/android test/ant-code-coverage-demo/bin/chapter1.ap_ create mode 100644 bonus/android test/ant-code-coverage-demo/bin/chapter1.ap_.d create mode 100644 bonus/android test/ant-code-coverage-demo/bin/classes.dex create mode 100644 bonus/android test/ant-code-coverage-demo/bin/classes.dex.d create mode 100644 bonus/android test/ant-code-coverage-demo/bin/jarlist.cache create mode 100644 bonus/android test/ant-code-coverage-demo/bin/proguard.txt create mode 100644 bonus/android test/ant-code-coverage-demo/bin/res/drawable-hdpi/ic_launcher.png create mode 100644 bonus/android test/ant-code-coverage-demo/bin/res/drawable-ldpi/ic_launcher.png create mode 100644 bonus/android test/ant-code-coverage-demo/bin/res/drawable-mdpi/ic_launcher.png create mode 100644 bonus/android test/ant-code-coverage-demo/build.xml create mode 100644 bonus/android test/ant-code-coverage-demo/gen/R.java.d create mode 100755 bonus/android test/ant-code-coverage-demo/gen/cn/hzbook/android/test/chapter1/BuildConfig.java create mode 100755 bonus/android test/ant-code-coverage-demo/gen/cn/hzbook/android/test/chapter1/R.java create mode 100755 bonus/android test/ant-code-coverage-demo/lint.xml create mode 100644 bonus/android test/ant-code-coverage-demo/local.properties create mode 100644 bonus/android test/ant-code-coverage-demo/proguard-project.txt create mode 100755 bonus/android test/ant-code-coverage-demo/proguard.cfg create mode 100755 bonus/android test/ant-code-coverage-demo/project.properties create mode 100755 bonus/android test/ant-code-coverage-demo/res/drawable-hdpi/ic_launcher.png create mode 100755 bonus/android test/ant-code-coverage-demo/res/drawable-ldpi/ic_launcher.png create mode 100755 bonus/android test/ant-code-coverage-demo/res/drawable-mdpi/ic_launcher.png create mode 100755 bonus/android test/ant-code-coverage-demo/res/layout/bookdetails.xml create mode 100755 bonus/android test/ant-code-coverage-demo/res/layout/bookeditor.xml create mode 100755 bonus/android test/ant-code-coverage-demo/res/layout/list_item.xml create mode 100755 bonus/android test/ant-code-coverage-demo/res/layout/main.xml create mode 100755 bonus/android test/ant-code-coverage-demo/res/menu/viewdetailsmenu.xml create mode 100755 bonus/android test/ant-code-coverage-demo/res/values/strings.xml create mode 100755 bonus/android test/ant-code-coverage-demo/src/cn/hzbook/android/test/chapter1/BookDetails.java create mode 100755 bonus/android test/ant-code-coverage-demo/src/cn/hzbook/android/test/chapter1/BookEditor.java create mode 100755 bonus/android test/ant-code-coverage-demo/src/cn/hzbook/android/test/chapter1/EditFlags.java create mode 100755 bonus/android test/ant-code-coverage-demo/src/cn/hzbook/android/test/chapter1/MainActivity.java create mode 100755 bonus/android test/ant-code-coverage-demo/src/cn/hzbook/android/test/chapter1/TheSimpleExpandableListAdapter.java create mode 100644 bonus/android test/ant-code-coverage-demo/test/.DS_Store create mode 100755 bonus/android test/ant-code-coverage-demo/test/AndroidManifest.xml create mode 100644 bonus/android test/ant-code-coverage-demo/test/ant.properties create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/.DS_Store create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/AndroidManifest.xml create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/AndroidManifest.xml.d create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/_files/0.html create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/_files/1.html create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/_files/2.html create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/_files/3.html create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/_files/4.html create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/_files/5.html create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/build.prop create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/chapter1-debug-unaligned.apk create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/chapter1-debug-unaligned.apk.d create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/chapter1-debug.apk create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/chapter1.ap_ create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/chapter1.ap_.d create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/classes.dex create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/classes.dex.d create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/coverage.html create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/coverage.txt create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/coverage.xml create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/jarlist.cache create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/proguard.txt create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/res/drawable-hdpi/ic_launcher.png create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/res/drawable-ldpi/ic_launcher.png create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/res/drawable-mdpi/ic_launcher.png create mode 100644 bonus/android test/ant-code-coverage-demo/test/bin/res/drawable-xhdpi/ic_launcher.png create mode 100644 bonus/android test/ant-code-coverage-demo/test/build.xml create mode 100644 bonus/android test/ant-code-coverage-demo/test/gen/R.java.d create mode 100755 bonus/android test/ant-code-coverage-demo/test/gen/cn/hzbook/android/test/chapter1/test/BuildConfig.java create mode 100755 bonus/android test/ant-code-coverage-demo/test/gen/cn/hzbook/android/test/chapter1/test/R.java create mode 100644 bonus/android test/ant-code-coverage-demo/test/local.properties create mode 100755 bonus/android test/ant-code-coverage-demo/test/proguard-project.txt create mode 100755 bonus/android test/ant-code-coverage-demo/test/project.properties create mode 100755 bonus/android test/ant-code-coverage-demo/test/res/drawable-hdpi/ic_launcher.png create mode 100755 bonus/android test/ant-code-coverage-demo/test/res/drawable-ldpi/ic_launcher.png create mode 100755 bonus/android test/ant-code-coverage-demo/test/res/drawable-mdpi/ic_launcher.png create mode 100755 bonus/android test/ant-code-coverage-demo/test/res/drawable-xhdpi/ic_launcher.png create mode 100755 bonus/android test/ant-code-coverage-demo/test/res/values/strings.xml create mode 100644 bonus/android test/ant-code-coverage-demo/test/src/.DS_Store create mode 100644 bonus/android test/ant-code-coverage-demo/test/src/cn/.DS_Store create mode 100644 bonus/android test/ant-code-coverage-demo/test/src/cn/hzbook/.DS_Store create mode 100644 bonus/android test/ant-code-coverage-demo/test/src/cn/hzbook/android/.DS_Store create mode 100644 bonus/android test/ant-code-coverage-demo/test/src/cn/hzbook/android/test/.DS_Store create mode 100644 bonus/android test/ant-code-coverage-demo/test/src/cn/hzbook/android/test/chapter1/.DS_Store create mode 100755 bonus/android test/ant-code-coverage-demo/test/src/cn/hzbook/android/test/chapter1/test/DemoUnitTest.java create mode 100644 bonus/bdd/.DS_Store create mode 100644 bonus/bdd/cucumber/.DS_Store create mode 100644 bonus/bdd/cucumber/cucumber-protractor/.DS_Store create mode 100644 bonus/bdd/cucumber/cucumber-protractor/course1/.DS_Store create mode 100644 bonus/bdd/cucumber/cucumber-protractor/course1/Makefile create mode 100644 bonus/bdd/cucumber/cucumber-protractor/course1/npm-debug.log create mode 100644 bonus/bdd/cucumber/cucumber-protractor/course1/tests/.DS_Store create mode 100644 bonus/bdd/cucumber/cucumber-protractor/course1/tests/features/.DS_Store create mode 100644 bonus/bdd/cucumber/cucumber-protractor/course1/tests/features/product-list.feature create mode 100644 bonus/bdd/cucumber/cucumber-protractor/course1/tests/features/step-definitions/productListStepDef.js create mode 100644 bonus/bdd/cucumber/cucumber-protractor/course1/tests/features/step-definitions/productListStepDef.js~ create mode 100644 bonus/bdd/cucumber/cucumber-protractor/course1/tests/features/support/world.js create mode 100644 bonus/bdd/cucumber/cucumber-protractor/course1/tests/features/support/world.js~ create mode 100644 bonus/bdd/cucumber/cucumber-protractor/course2/.DS_Store create mode 100644 bonus/bdd/cucumber/cucumber-protractor/course2/Makefile create mode 100644 bonus/bdd/cucumber/cucumber-protractor/course2/tests/features/product-list.feature create mode 100644 bonus/bdd/cucumber/cucumber-protractor/course2/tests/features/product-list.feature~ create mode 100644 bonus/bdd/cucumber/cucumber-protractor/course2/tests/features/step-definitions/productListStepDef.js create mode 100644 bonus/bdd/cucumber/cucumber-protractor/course2/tests/features/step-definitions/productListStepDef.js~ create mode 100644 bonus/bdd/cucumber/cucumber-protractor/course2/tests/features/support/world.js create mode 100644 bonus/bdd/cucumber/cucumber-protractor/course2/tests/features/support/world.js~ create mode 100644 bonus/bdd/cucumber/cucumber-protractor/getting-started/Makefile create mode 100644 bonus/bdd/cucumber/cucumber-protractor/getting-started/tests/features/shipping.feature create mode 100644 bonus/bdd/cucumber/cucumber-protractor/getting-started/tests/features/step-definitions/shippingDef.js create mode 100644 bonus/bdd/cucumber/cucumber-protractor/getting-started/tests/features/support/hooks.js create mode 100644 bonus/bdd/cucumber/cucumber-protractor/getting-started/tests/features/support/robot.js create mode 100644 bonus/bdd/cucumber/cucumber-turtorial/.DS_Store create mode 100755 bonus/bdd/cucumber/cucumber-turtorial/features/.DS_Store create mode 100755 bonus/bdd/cucumber/cucumber-turtorial/features/product-list.feature create mode 100755 bonus/bdd/cucumber/cucumber-turtorial/features/step-definitions/productListStepDef.js create mode 100755 bonus/bdd/cucumber/cucumber-turtorial/features/step-definitions/productListStepDef.js~ create mode 100755 bonus/bdd/cucumber/cucumber-turtorial/features/support/world.js create mode 100755 bonus/bdd/cucumber/cucumber-turtorial/features/support/world.js~ create mode 100644 bonus/bdd/cucumber/cucumber-turtorial/hands-on-lab/.DS_Store create mode 100644 bonus/bdd/cucumber/cucumber-turtorial/hands-on-lab/i18n/i18n.feature create mode 100644 bonus/bdd/cucumber/cucumber-turtorial/hands-on-lab/i18n/i18nDef.js create mode 100644 bonus/bdd/cucumber/cucumber-turtorial/hands-on-lab/nuskin-ui-demo.js create mode 100644 bonus/bdd/cucumber/cucumber-turtorial/hands-on-lab/scenario-outline/demo.feature create mode 100644 bonus/bdd/cucumber/cucumber-turtorial/hands-on-lab/scenario-outline/demoDef.js create mode 100644 bonus/bdd/cucumber/cucumber-turtorial/hands-on-lab/step-arguments/demo.feature create mode 100644 bonus/bdd/cucumber/cucumber-turtorial/hands-on-lab/step-arguments/demoStepDef.js create mode 100644 bonus/bdd/cucumber/cucumber-turtorial/hands-on-lab/thenDemo.js create mode 100644 bonus/bdd/cucumber/cucumber-turtorial/protractor/.DS_Store create mode 100755 bonus/bdd/cucumber/cucumber-turtorial/protractor/demo/angular.min.js create mode 100644 bonus/bdd/cucumber/cucumber-turtorial/protractor/demo/bootstrap.css create mode 100644 bonus/bdd/cucumber/cucumber-turtorial/protractor/demo/calc.js create mode 100644 bonus/bdd/cucumber/cucumber-turtorial/protractor/demo/protractor-demo.html create mode 100644 bonus/bdd/cucumber/cucumber-turtorial/protractor/demo/webwxgetmsgimg.jpeg create mode 100644 bonus/bdd/cucumber/cucumber-turtorial/protractor/webdriver/cancel-promise.js create mode 100644 bonus/bdd/cucumber/cucumber-turtorial/protractor/webdriver/defer.js create mode 100644 bonus/bdd/cucumber/cucumber-turtorial/research/Shipping.feature create mode 100644 bonus/bdd/cucumber/cucumber-turtorial/research/m-commerce.feature create mode 100644 bonus/bdd/cucumber/cucumber-turtorial/research/mcommerceDef.js create mode 100644 bonus/bdd/cucumber/demo/.DS_Store create mode 100644 bonus/bdd/cucumber/demo/cucumber-hands-on-lab/matchemailaddress-stepdefs.js create mode 100644 bonus/bdd/cucumber/demo/cucumber-hands-on-lab/matchemailaddress-stepdefs.js~ create mode 100644 bonus/bdd/cucumber/demo/cucumber-hands-on-lab/matchemailaddress.feature create mode 100644 bonus/bdd/cucumber/demo/cucumber-hands-on-lab/matchemailaddress.feature~ create mode 100644 bonus/bdd/cucumber/demo/cucumber-unit/matchfloatingnumber-stepdefs.js create mode 100644 bonus/bdd/cucumber/demo/cucumber-unit/matchfloatingnumber-stepdefs.js~ create mode 100644 bonus/bdd/cucumber/demo/cucumber-unit/matchfloatingnumber.feature create mode 100644 bonus/bdd/cucumber/demo/cucumber-unit/matchfloatingnumber.feature~ create mode 100644 bonus/bdd/cucumber/demo/cucumber-unit/product-code.js create mode 100644 bonus/bdd/cucumber/demo/cucumber-unit/product-code.js~ create mode 100644 bonus/bdd/cucumber/syntax/.DS_Store create mode 100644 bonus/bdd/cucumber/syntax/background/Makefile create mode 100644 bonus/bdd/cucumber/syntax/background/tests/features/background.feature create mode 100644 bonus/bdd/cucumber/syntax/background/tests/features/step-definitions/backgroundDef.js create mode 100644 bonus/bdd/cucumber/syntax/basic-sample/Makefile create mode 100644 bonus/bdd/cucumber/syntax/basic-sample/tests/features/GettingStart.feature create mode 100644 bonus/bdd/cucumber/syntax/basic-sample/tests/features/step_definitions/gettingStartStepDef.js create mode 100644 bonus/bdd/cucumber/syntax/basic-sample/tests/features/support/world.js create mode 100644 bonus/bdd/cucumber/syntax/cli/.DS_Store create mode 100644 bonus/bdd/cucumber/syntax/cli/Makefile create mode 100644 bonus/bdd/cucumber/syntax/cli/README create mode 100644 bonus/bdd/cucumber/syntax/cli/tests/.DS_Store create mode 100644 bonus/bdd/cucumber/syntax/cli/tests/features/product-list.feature create mode 100644 bonus/bdd/cucumber/syntax/course-scenario-outline/Makefile create mode 100644 bonus/bdd/cucumber/syntax/course-scenario-outline/tests/features/product-list.feature create mode 100644 bonus/bdd/cucumber/syntax/course-scenario-outline/tests/features/step-definitions/productListStepDef.js create mode 100644 bonus/bdd/cucumber/syntax/course-scenario-outline/tests/features/step-definitions/productListStepDef.js~ create mode 100644 bonus/bdd/cucumber/syntax/course-scenario-outline/tests/features/support/world.js create mode 100644 bonus/bdd/cucumber/syntax/course-scenario-outline/tests/features/support/world.js~ create mode 100644 bonus/bdd/cucumber/syntax/hooks/Makefile create mode 100644 bonus/bdd/cucumber/syntax/hooks/tests/features/hook-withfailscenario.feature create mode 100644 bonus/bdd/cucumber/syntax/hooks/tests/features/hooks.feature create mode 100644 bonus/bdd/cucumber/syntax/hooks/tests/features/step-definitions/hooksDef.js create mode 100644 bonus/bdd/cucumber/syntax/hooks/tests/features/step-definitions/tagHooksDef.js create mode 100644 bonus/bdd/cucumber/syntax/hooks/tests/features/support/world.js~ create mode 100644 bonus/bdd/cucumber/syntax/hooks/tests/features/tagHooks.feature create mode 100644 bonus/bdd/cucumber/syntax/research/.DS_Store create mode 100644 bonus/bdd/cucumber/syntax/research/bizcard/basic.feature create mode 100644 bonus/bdd/cucumber/syntax/step-argument/Makefile create mode 100644 bonus/bdd/cucumber/syntax/step-argument/tests/features/step-argument.feature create mode 100644 bonus/bdd/cucumber/syntax/step-argument/tests/features/step-definitions/stepArgumentDef.js create mode 100644 bonus/bdd/cucumber/syntax/step-argument/tests/features/support/world.js create mode 100644 bonus/bdd/cucumber/syntax/step-argument/tests/features/support/world.js~ create mode 100644 bonus/bdd/cucumber/syntax/tags/Makefile create mode 100644 bonus/bdd/cucumber/syntax/tags/README create mode 100644 bonus/bdd/cucumber/syntax/tags/tests/features/bug.feature create mode 100644 bonus/bdd/cucumber/syntax/tags/tests/features/e2e.feature create mode 100644 bonus/bdd/cucumber/syntax/tags/tests/features/step-definitions/tagsDef.js create mode 100644 bonus/bdd/cucumber/syntax/tags/tests/features/tag.feature create mode 100644 bonus/bdd/cucumber/syntax/world-sample/Makefile create mode 100644 bonus/bdd/cucumber/syntax/world-sample/tests/features/GettingStart.feature create mode 100644 bonus/bdd/cucumber/syntax/world-sample/tests/features/step_definitions/gettingStartStepDef.js create mode 100644 bonus/bdd/cucumber/syntax/world-sample/tests/features/support/world.js create mode 100644 bonus/bdd/jasmine/.DS_Store create mode 100644 bonus/bdd/jasmine/jasmine1/.DS_Store create mode 100755 bonus/bdd/jasmine/jasmine1/SpecRunner.html create mode 100755 bonus/bdd/jasmine/jasmine1/spec/sourceSpec.js create mode 100755 bonus/bdd/jasmine/jasmine1/src/source.js create mode 100644 bonus/bdd/jasmine/jasmine2/.DS_Store create mode 100755 bonus/bdd/jasmine/jasmine2/SpecRunner.html create mode 100755 bonus/bdd/jasmine/jasmine2/spec/sourceSpec.js create mode 100755 bonus/bdd/jasmine/jasmine2/src/source.js create mode 100755 bonus/bdd/jasmine/jasmine3/SpecRunner.html create mode 100755 bonus/bdd/jasmine/jasmine3/spec/sourceSpec.js create mode 100755 bonus/bdd/jasmine/jasmine3/src/source.js create mode 100755 bonus/bdd/jasmine/jasmine3/src/source.js~ create mode 100644 bonus/bdd/jasmine/jasmine4/.DS_Store create mode 100755 bonus/bdd/jasmine/jasmine4/SpecRunner.html create mode 100755 bonus/bdd/jasmine/jasmine4/spec/sourceSpec.js create mode 100755 bonus/bdd/jasmine/jasmine4/src/source.js create mode 100755 bonus/bdd/jasmine/jasmine5/SpecRunner.html create mode 100755 bonus/bdd/jasmine/jasmine5/spec/downloaderSpec.js create mode 100755 bonus/bdd/jasmine/jasmine5/src/downloader.js create mode 100644 bonus/bdd/jasmine/lib/.DS_Store create mode 100755 bonus/bdd/jasmine/lib/jasmine-2.0.1/boot.js create mode 100755 bonus/bdd/jasmine/lib/jasmine-2.0.1/console.js create mode 100755 bonus/bdd/jasmine/lib/jasmine-2.0.1/jasmine-html.js create mode 100755 bonus/bdd/jasmine/lib/jasmine-2.0.1/jasmine.css create mode 100755 bonus/bdd/jasmine/lib/jasmine-2.0.1/jasmine.js create mode 100755 bonus/bdd/jasmine/lib/jasmine-2.0.1/jasmine_favicon.png create mode 100644 bonus/cordova/.DS_Store create mode 100644 bonus/cordova/.gitignore create mode 100644 bonus/cordova/3000cg/.DS_Store create mode 100644 bonus/cordova/3000cg/nanhucg/.DS_Store create mode 100644 bonus/cordova/3000cg/nanhucg/config.xml create mode 100644 bonus/cordova/3000cg/nanhucg/hooks/.DS_Store create mode 100644 bonus/cordova/3000cg/nanhucg/hooks/README.md create mode 100644 bonus/cordova/3000cg/nanhucg/npm-debug.log create mode 100644 bonus/cordova/3000cg/nanhucg/platforms/.DS_Store create mode 100644 bonus/cordova/3000cg/nanhucg/platforms/platforms.json create mode 100644 bonus/cordova/3000cg/nanhucg/plugins/.DS_Store create mode 100644 bonus/cordova/3000cg/nanhucg/plugins/android.json create mode 100644 bonus/cordova/3000cg/nanhucg/plugins/baiduloc/.DS_Store create mode 100644 bonus/cordova/3000cg/nanhucg/plugins/baiduloc/plugin.xml create mode 100644 bonus/cordova/3000cg/nanhucg/plugins/fetch.json create mode 100644 bonus/cordova/3000cg/nanhucg/plugins/toast/plugin.xml create mode 100644 bonus/cordova/3000cg/nanhucg/www/.DS_Store create mode 100755 bonus/cordova/3000cg/nanhucg/www/css/images/ajax-loader.gif create mode 100755 bonus/cordova/3000cg/nanhucg/www/css/images/icons-18-black.png create mode 100755 bonus/cordova/3000cg/nanhucg/www/css/images/icons-18-white.png create mode 100755 bonus/cordova/3000cg/nanhucg/www/css/images/icons-36-black.png create mode 100755 bonus/cordova/3000cg/nanhucg/www/css/images/icons-36-white.png create mode 100755 bonus/cordova/3000cg/nanhucg/www/css/jquery.mobile-1.3.2.css create mode 100755 bonus/cordova/3000cg/nanhucg/www/css/jquery.mobile-1.3.2.min.css create mode 100755 bonus/cordova/3000cg/nanhucg/www/css/jquery.mobile.structure-1.3.2.css create mode 100644 bonus/cordova/3000cg/nanhucg/www/html/.DS_Store create mode 100755 bonus/cordova/3000cg/nanhucg/www/html/Focus_on.html create mode 100755 bonus/cordova/3000cg/nanhucg/www/html/Geo.html create mode 100755 bonus/cordova/3000cg/nanhucg/www/html/JDXQ.html create mode 100755 bonus/cordova/3000cg/nanhucg/www/html/Login.html create mode 100755 bonus/cordova/3000cg/nanhucg/www/html/MessageInfo.html create mode 100755 bonus/cordova/3000cg/nanhucg/www/html/Modifykey.html create mode 100755 bonus/cordova/3000cg/nanhucg/www/html/Newsuper.html create mode 100755 bonus/cordova/3000cg/nanhucg/www/html/SBXQ.html create mode 100755 bonus/cordova/3000cg/nanhucg/www/html/Set_up.html create mode 100755 bonus/cordova/3000cg/nanhucg/www/html/baiduMap.html create mode 100755 bonus/cordova/3000cg/nanhucg/www/html/case.html create mode 100755 bonus/cordova/3000cg/nanhucg/www/html/contact.html create mode 100755 bonus/cordova/3000cg/nanhucg/www/html/home_page.html create mode 100755 bonus/cordova/3000cg/nanhucg/www/html/inspection.html create mode 100755 bonus/cordova/3000cg/nanhucg/www/html/newAdd.html create mode 100755 bonus/cordova/3000cg/nanhucg/www/html/push.html create mode 100755 bonus/cordova/3000cg/nanhucg/www/html/record.html create mode 100755 bonus/cordova/3000cg/nanhucg/www/html/supervision.html create mode 100755 bonus/cordova/3000cg/nanhucg/www/images/Focus_on.png create mode 100755 bonus/cordova/3000cg/nanhucg/www/images/bg.png create mode 100755 bonus/cordova/3000cg/nanhucg/www/images/case.png create mode 100755 bonus/cordova/3000cg/nanhucg/www/images/help.png create mode 100755 bonus/cordova/3000cg/nanhucg/www/images/inspection.png create mode 100755 bonus/cordova/3000cg/nanhucg/www/images/phone.png create mode 100755 bonus/cordova/3000cg/nanhucg/www/images/record.png create mode 100755 bonus/cordova/3000cg/nanhucg/www/images/set_up.png create mode 100755 bonus/cordova/3000cg/nanhucg/www/images/vision.png create mode 100755 bonus/cordova/3000cg/nanhucg/www/images/yi.gif create mode 100755 bonus/cordova/3000cg/nanhucg/www/index.html create mode 100644 bonus/cordova/3000cg/nanhucg/www/js/.DS_Store create mode 100755 bonus/cordova/3000cg/nanhucg/www/js/BaiduLoc.js create mode 100755 bonus/cordova/3000cg/nanhucg/www/js/Toast-Plugin.js create mode 100755 bonus/cordova/3000cg/nanhucg/www/js/fileuploader.js create mode 100755 bonus/cordova/3000cg/nanhucg/www/js/jquery-1.7.2.js create mode 100755 bonus/cordova/3000cg/nanhucg/www/js/jquery-1.8.2.min.js create mode 100755 bonus/cordova/3000cg/nanhucg/www/js/jquery.js create mode 100755 bonus/cordova/3000cg/nanhucg/www/js/jquery.mobile-1.3.2.min.js create mode 100755 bonus/cordova/3000cg/nanhucg/www/js/sonic.js create mode 100644 bonus/cordova/cg/.DS_Store create mode 100644 bonus/cordova/cg/config.xml create mode 100644 bonus/cordova/cg/hooks/README.md create mode 100644 bonus/cordova/cg/platforms/.DS_Store create mode 100644 bonus/cordova/cg/platforms/platforms.json create mode 100644 bonus/cordova/cg/plugins/.DS_Store create mode 100644 bonus/cordova/cg/plugins/android.json create mode 100644 bonus/cordova/cg/plugins/com.phonegap.plugins.baidupushservice/LICENSE create mode 100644 bonus/cordova/cg/plugins/com.phonegap.plugins.baidupushservice/README.md create mode 100644 bonus/cordova/cg/plugins/com.phonegap.plugins.baidupushservice/example/css/index.css create mode 100644 bonus/cordova/cg/plugins/com.phonegap.plugins.baidupushservice/example/index.html create mode 100644 bonus/cordova/cg/plugins/com.phonegap.plugins.baidupushservice/example/js/index.js create mode 100644 bonus/cordova/cg/plugins/com.phonegap.plugins.baidupushservice/plugin.xml create mode 100644 bonus/cordova/cg/plugins/com.phonegap.plugins.baidupushservice/www/pushservice.js create mode 100644 bonus/cordova/cg/plugins/fetch.json create mode 100644 bonus/cordova/cg/plugins/ios.json create mode 100644 bonus/cordova/cg/www/.DS_Store create mode 100644 bonus/cordova/cg/www/css/images/ajax-loader.gif create mode 100644 bonus/cordova/cg/www/css/images/icons-18-black.png create mode 100644 bonus/cordova/cg/www/css/images/icons-18-white.png create mode 100644 bonus/cordova/cg/www/css/images/icons-36-black.png create mode 100644 bonus/cordova/cg/www/css/images/icons-36-white.png create mode 100644 bonus/cordova/cg/www/css/jquery.mobile-1.3.2.css create mode 100644 bonus/cordova/cg/www/css/jquery.mobile-1.3.2.min.css create mode 100644 bonus/cordova/cg/www/css/jquery.mobile.structure-1.3.2.css create mode 100644 bonus/cordova/cg/www/html/.DS_Store create mode 100644 bonus/cordova/cg/www/html/Focus_on.html create mode 100644 bonus/cordova/cg/www/html/Geo.html create mode 100644 bonus/cordova/cg/www/html/JDXQ.html create mode 100644 bonus/cordova/cg/www/html/Login.html create mode 100644 bonus/cordova/cg/www/html/Newsuper.html create mode 100644 bonus/cordova/cg/www/html/SBXQ.html create mode 100644 bonus/cordova/cg/www/html/Set_up.html create mode 100644 bonus/cordova/cg/www/html/case.html create mode 100644 bonus/cordova/cg/www/html/contact.html create mode 100644 bonus/cordova/cg/www/html/home_page.html create mode 100644 bonus/cordova/cg/www/html/inspection.html create mode 100644 bonus/cordova/cg/www/html/newAdd.html create mode 100644 bonus/cordova/cg/www/html/record.html create mode 100644 bonus/cordova/cg/www/html/supervision.html create mode 100644 bonus/cordova/cg/www/images/Focus_on.png create mode 100644 bonus/cordova/cg/www/images/bg.png create mode 100644 bonus/cordova/cg/www/images/case.png create mode 100644 bonus/cordova/cg/www/images/help.png create mode 100644 bonus/cordova/cg/www/images/inspection.png create mode 100644 bonus/cordova/cg/www/images/phone.png create mode 100644 bonus/cordova/cg/www/images/record.png create mode 100644 bonus/cordova/cg/www/images/set_up.png create mode 100644 bonus/cordova/cg/www/images/vision.png create mode 100644 bonus/cordova/cg/www/images/yi.gif create mode 100644 bonus/cordova/cg/www/img/logo.png create mode 100644 bonus/cordova/cg/www/index.html create mode 100644 bonus/cordova/cg/www/js/.DS_Store create mode 100644 bonus/cordova/cg/www/js/Toast-Plugin.js create mode 100644 bonus/cordova/cg/www/js/fileuploader.js create mode 100644 bonus/cordova/cg/www/js/jquery-1.7.2.js create mode 100644 bonus/cordova/cg/www/js/jquery-1.8.2.min.js create mode 100644 bonus/cordova/cg/www/js/jquery.js create mode 100644 bonus/cordova/cg/www/js/jquery.mobile-1.3.2.min.js create mode 100644 bonus/cordova/cg/www/js/sonic.js create mode 100644 bonus/cordova/demo/.DS_Store create mode 100644 bonus/cordova/demo/config.xml create mode 100644 bonus/cordova/demo/hooks/README.md create mode 100644 bonus/cordova/demo/www/css/index.css create mode 100644 bonus/cordova/demo/www/img/logo.png create mode 100644 bonus/cordova/demo/www/index.html create mode 100644 bonus/cordova/demo/www/js/index.js create mode 100644 bonus/cordova/hello/.DS_Store create mode 100644 bonus/cordova/hello/config.xml create mode 100644 bonus/cordova/hello/hooks/README.md create mode 100644 bonus/cordova/hello/platforms/.DS_Store create mode 100644 bonus/cordova/hello/platforms/platforms.json create mode 100644 bonus/cordova/hello/plugins/.DS_Store create mode 100644 bonus/cordova/hello/plugins/android.json create mode 100644 bonus/cordova/hello/plugins/fetch.json create mode 100644 bonus/cordova/hello/plugins/ios.json create mode 100644 bonus/cordova/hello/www/.DS_Store create mode 100644 bonus/cordova/hello/www/css/images/ajax-loader.gif create mode 100644 bonus/cordova/hello/www/css/images/icons-18-black.png create mode 100644 bonus/cordova/hello/www/css/images/icons-18-white.png create mode 100644 bonus/cordova/hello/www/css/images/icons-36-black.png create mode 100644 bonus/cordova/hello/www/css/images/icons-36-white.png create mode 100644 bonus/cordova/hello/www/css/index.css create mode 100644 bonus/cordova/hello/www/css/jquery.mobile-1.3.2.css create mode 100644 bonus/cordova/hello/www/css/jquery.mobile-1.3.2.min.css create mode 100644 bonus/cordova/hello/www/css/jquery.mobile.structure-1.3.2.css create mode 100644 bonus/cordova/hello/www/img/logo.png create mode 100644 bonus/cordova/hello/www/index.html create mode 100644 bonus/cordova/hello/www/js/index.js create mode 100644 bonus/cordova/hello/www/js/jquery-1.8.2.min.js create mode 100644 bonus/cordova/hello/www/js/jquery.mobile-1.3.2.min.js create mode 100644 bonus/cordova/html5/.DS_Store create mode 100644 bonus/cordova/html5/.idea/.name create mode 100644 bonus/cordova/html5/.idea/html5.iml create mode 100644 bonus/cordova/html5/.idea/misc.xml create mode 100644 bonus/cordova/html5/.idea/modules.xml create mode 100644 bonus/cordova/html5/.idea/vcs.xml create mode 100644 bonus/cordova/html5/.idea/workspace.xml create mode 100644 bonus/cordova/html5/localstorage/demo.html create mode 100644 bonus/cordova/html5/localstorage/event-demo.html create mode 100644 bonus/html5 test/.DS_Store create mode 100644 bonus/html5 test/karma/.DS_Store create mode 100644 bonus/html5 test/karma/coverage/.DS_Store create mode 100755 bonus/html5 test/karma/coverage/CONTRIBUTING.md create mode 100755 bonus/html5 test/karma/coverage/README.md create mode 100755 bonus/html5 test/karma/coverage/karma.conf.js create mode 100755 bonus/html5 test/karma/coverage/karma.conf.js~ create mode 100755 bonus/html5 test/karma/coverage/license.txt create mode 100755 bonus/html5 test/karma/coverage/package.json create mode 100755 bonus/html5 test/karma/coverage/package.json~ create mode 100755 bonus/html5 test/karma/coverage/spec/geometryUtilsSpec.js create mode 100755 bonus/html5 test/karma/coverage/spec/imageServiceUtilsSpec.js create mode 100755 bonus/html5 test/karma/coverage/spec/main.js create mode 100755 bonus/html5 test/karma/coverage/src/esri-utils/geometryUtils.js create mode 100755 bonus/html5 test/karma/coverage/src/esri-utils/imageServiceUtils.js create mode 100755 bonus/html5 test/karma/coverage/src/index.html create mode 100644 bonus/html5 test/karma/demo/.DS_Store create mode 100755 bonus/html5 test/karma/demo/CONTRIBUTING.md create mode 100755 bonus/html5 test/karma/demo/README.md create mode 100755 bonus/html5 test/karma/demo/karma.conf.js create mode 100755 bonus/html5 test/karma/demo/license.txt create mode 100755 bonus/html5 test/karma/demo/package.json create mode 100755 bonus/html5 test/karma/demo/spec/geometryUtilsSpec.js create mode 100755 bonus/html5 test/karma/demo/spec/imageServiceUtilsSpec.js create mode 100755 bonus/html5 test/karma/demo/spec/main.js create mode 100755 bonus/html5 test/karma/demo/src/esri-utils/geometryUtils.js create mode 100755 bonus/html5 test/karma/demo/src/esri-utils/geometryUtils.js~ create mode 100755 bonus/html5 test/karma/demo/src/esri-utils/imageServiceUtils.js create mode 100755 bonus/html5 test/karma/demo/src/index.html create mode 100644 bonus/html5 test/protractor/.DS_Store create mode 100755 bonus/html5 test/protractor/conf.js create mode 100644 bonus/html5 test/protractor/hands-on-lab/baidu-it.js create mode 100644 bonus/html5 test/protractor/hands-on-lab/nuskin-ui-demo.js create mode 100755 bonus/html5 test/protractor/spec.js create mode 100644 bonus/html5 test/qunit/.DS_Store create mode 100755 bonus/html5 test/qunit/asynctest.html create mode 100755 bonus/html5 test/qunit/asynctest.html~ create mode 100755 bonus/html5 test/qunit/asynctest.js create mode 100755 bonus/html5 test/qunit/check-for-global.html create mode 100755 bonus/html5 test/qunit/check-for-global.html~ create mode 100755 bonus/html5 test/qunit/deepequal.html create mode 100755 bonus/html5 test/qunit/deepequal.html~ create mode 100755 bonus/html5 test/qunit/deepequal.js create mode 100755 bonus/html5 test/qunit/deepequal.js~ create mode 100755 bonus/html5 test/qunit/equal.html create mode 100755 bonus/html5 test/qunit/equal.html~ create mode 100755 bonus/html5 test/qunit/equal.js create mode 100755 bonus/html5 test/qunit/equal.js~ create mode 100755 bonus/html5 test/qunit/group.html create mode 100755 bonus/html5 test/qunit/group.js create mode 100755 bonus/html5 test/qunit/hello-word.html create mode 100755 bonus/html5 test/qunit/no-try-catch.html create mode 100755 bonus/html5 test/qunit/no-try-catch.html~ create mode 100755 bonus/html5 test/qunit/ok.html create mode 100755 bonus/html5 test/qunit/ok.html~ create mode 100755 bonus/html5 test/qunit/ok.js create mode 100755 bonus/html5 test/qunit/ok.js~ create mode 100755 bonus/html5 test/qunit/qunit/jquery.min.js create mode 100755 bonus/html5 test/qunit/qunit/qunit.css create mode 100755 bonus/html5 test/qunit/qunit/qunit.js create mode 100755 bonus/html5 test/qunit/qunit/syn.js create mode 100755 bonus/html5 test/qunit/qunitdemo.html~ create mode 100755 bonus/html5 test/qunit/synccallback.html create mode 100755 bonus/html5 test/qunit/synccallback.html~ create mode 100755 bonus/html5 test/qunit/synccallback.js create mode 100755 bonus/html5 test/qunit/synccallback.js~ create mode 100755 bonus/html5 test/qunit/useraction-source.js create mode 100755 bonus/html5 test/qunit/useraction.html create mode 100755 bonus/html5 test/qunit/useraction.js create mode 100644 bonus/html5 test/tdd-hands-on-lab/.DS_Store create mode 100644 bonus/html5 test/tdd-hands-on-lab/step3-completed/.DS_Store create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3-completed/exercise1.html create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3-completed/exercise2.html create mode 100644 bonus/html5 test/tdd-hands-on-lab/step3-completed/img/.DS_Store create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3-completed/img/.gitkeep create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3-completed/js/controllers.js create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3-completed/phones/phones.txt create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3-completed/test/conf.js create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3-completed/test/e2e.js create mode 100644 bonus/html5 test/tdd-hands-on-lab/step3/.DS_Store create mode 100644 bonus/html5 test/tdd-hands-on-lab/step3/img/.DS_Store create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/.gitkeep create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/glyphicons-halflings-white.png create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/glyphicons-halflings.png create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/dell-streak-7.0.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/dell-streak-7.1.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/dell-streak-7.2.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/dell-streak-7.3.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/dell-streak-7.4.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/dell-venue.0.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/dell-venue.1.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/dell-venue.2.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/dell-venue.3.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/dell-venue.4.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/dell-venue.5.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/droid-2-global-by-motorola.0.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/droid-2-global-by-motorola.1.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/droid-2-global-by-motorola.2.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/droid-pro-by-motorola.0.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/droid-pro-by-motorola.1.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/lg-axis.0.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/lg-axis.1.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/lg-axis.2.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/motorola-atrix-4g.0.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/motorola-atrix-4g.1.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/motorola-atrix-4g.2.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/motorola-atrix-4g.3.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/motorola-bravo-with-motoblur.0.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/motorola-bravo-with-motoblur.1.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/motorola-bravo-with-motoblur.2.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/motorola-charm-with-motoblur.0.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/motorola-charm-with-motoblur.1.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/motorola-charm-with-motoblur.2.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/motorola-defy-with-motoblur.0.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/motorola-defy-with-motoblur.1.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/motorola-defy-with-motoblur.2.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/motorola-xoom-with-wi-fi.0.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/motorola-xoom-with-wi-fi.1.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/motorola-xoom-with-wi-fi.2.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/motorola-xoom-with-wi-fi.3.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/motorola-xoom-with-wi-fi.4.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/motorola-xoom-with-wi-fi.5.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/motorola-xoom.0.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/motorola-xoom.1.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/motorola-xoom.2.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/nexus-s.0.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/nexus-s.1.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/nexus-s.2.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/nexus-s.3.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/samsung-galaxy-tab.0.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/samsung-galaxy-tab.1.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/samsung-galaxy-tab.2.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/samsung-galaxy-tab.3.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/samsung-galaxy-tab.4.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/samsung-galaxy-tab.5.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/samsung-galaxy-tab.6.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/samsung-gem.0.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/samsung-gem.1.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/samsung-gem.2.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/samsung-mesmerize-a-galaxy-s-phone.0.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/samsung-mesmerize-a-galaxy-s-phone.1.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/samsung-mesmerize-a-galaxy-s-phone.2.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/samsung-mesmerize-a-galaxy-s-phone.3.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/samsung-showcase-a-galaxy-s-phone.0.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/samsung-showcase-a-galaxy-s-phone.1.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/samsung-showcase-a-galaxy-s-phone.2.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/samsung-transform.0.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/samsung-transform.1.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/samsung-transform.2.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/samsung-transform.3.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/samsung-transform.4.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/sanyo-zio.0.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/sanyo-zio.1.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/sanyo-zio.2.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/t-mobile-g2.0.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/t-mobile-g2.1.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/t-mobile-g2.2.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/t-mobile-mytouch-4g.0.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/t-mobile-mytouch-4g.1.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/t-mobile-mytouch-4g.2.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/t-mobile-mytouch-4g.3.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/t-mobile-mytouch-4g.4.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/img/phones/t-mobile-mytouch-4g.5.jpg create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/index.html create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/index.html~ create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/js/app.js create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/js/controllers.js create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/phones/phones.txt create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/test/conf.js create mode 100755 bonus/html5 test/tdd-hands-on-lab/step3/test/e2e.js create mode 100644 bonus/html5 test/tdd-hands-on-lab/step4-completed/.DS_Store create mode 100644 bonus/html5 test/tdd-hands-on-lab/step4-completed/img/.DS_Store create mode 100755 bonus/html5 test/tdd-hands-on-lab/step4-completed/img/.gitkeep create mode 100755 bonus/html5 test/tdd-hands-on-lab/step4-completed/index.html create mode 100755 bonus/html5 test/tdd-hands-on-lab/step4-completed/js/app.js create mode 100755 bonus/html5 test/tdd-hands-on-lab/step4-completed/js/controllers.js create mode 100755 bonus/html5 test/tdd-hands-on-lab/step4-completed/partials/phone-detail.html create mode 100755 bonus/html5 test/tdd-hands-on-lab/step4-completed/partials/phone-list.html create mode 100755 bonus/html5 test/tdd-hands-on-lab/step4-completed/phones/phones.txt create mode 100755 bonus/html5 test/tdd-hands-on-lab/step4-completed/test/conf.js create mode 100755 bonus/html5 test/tdd-hands-on-lab/step4-completed/test/e2e.js create mode 100644 bonus/html5 test/tdd-hands-on-lab/step4/.DS_Store create mode 100644 bonus/html5 test/tdd-hands-on-lab/step4/img/.DS_Store create mode 100755 bonus/html5 test/tdd-hands-on-lab/step4/img/.gitkeep create mode 100755 bonus/html5 test/tdd-hands-on-lab/step4/index.html create mode 100755 bonus/html5 test/tdd-hands-on-lab/step4/js/app.js create mode 100755 bonus/html5 test/tdd-hands-on-lab/step4/js/controllers.js create mode 100755 bonus/html5 test/tdd-hands-on-lab/step4/partials/phone-detail.html create mode 100755 bonus/html5 test/tdd-hands-on-lab/step4/partials/phone-list.html create mode 100755 bonus/html5 test/tdd-hands-on-lab/step4/phones/phones.txt create mode 100755 bonus/html5 test/tdd-hands-on-lab/step4/test/conf.js create mode 100755 bonus/html5 test/tdd-hands-on-lab/step4/test/e2e.js create mode 100644 bonus/html5 test/tdd/.DS_Store create mode 100755 bonus/html5 test/tdd/css/app.css create mode 100644 bonus/html5 test/tdd/ioc/$inject/.DS_Store create mode 100755 bonus/html5 test/tdd/ioc/$inject/index.html create mode 100755 bonus/html5 test/tdd/ioc/$inject/js/app.js create mode 100755 bonus/html5 test/tdd/ioc/$inject/js/controllers.js create mode 100644 bonus/html5 test/tdd/ioc/.DS_Store create mode 100755 bonus/html5 test/tdd/ioc/implicit/index.html create mode 100755 bonus/html5 test/tdd/ioc/implicit/js/app.js create mode 100755 bonus/html5 test/tdd/ioc/implicit/js/controllers.js create mode 100755 bonus/html5 test/tdd/ioc/inline/index.html create mode 100755 bonus/html5 test/tdd/ioc/inline/js/app.js create mode 100755 bonus/html5 test/tdd/ioc/inline/js/controllers.js create mode 100644 bonus/html5 test/tdd/ioc/test-demo/.DS_Store create mode 100755 bonus/html5 test/tdd/ioc/test-demo/UnitTestRunner.html create mode 100755 bonus/html5 test/tdd/ioc/test-demo/index.html create mode 100755 bonus/html5 test/tdd/ioc/test-demo/js/app.js create mode 100755 bonus/html5 test/tdd/ioc/test-demo/js/controllers.js create mode 100755 bonus/html5 test/tdd/ioc/test-demo/test/controllersSpec.js create mode 100644 bonus/html5 test/tdd/lib/.DS_Store create mode 100755 bonus/html5 test/tdd/lib/angular-animate.js create mode 100755 bonus/html5 test/tdd/lib/angular-animate.min.js create mode 100755 bonus/html5 test/tdd/lib/angular-animate.min.js.map create mode 100755 bonus/html5 test/tdd/lib/angular-cookies.js create mode 100755 bonus/html5 test/tdd/lib/angular-cookies.min.js create mode 100755 bonus/html5 test/tdd/lib/angular-cookies.min.js.map create mode 100755 bonus/html5 test/tdd/lib/angular-csp.css create mode 100755 bonus/html5 test/tdd/lib/angular-loader.js create mode 100755 bonus/html5 test/tdd/lib/angular-loader.min.js create mode 100755 bonus/html5 test/tdd/lib/angular-loader.min.js.map create mode 100755 bonus/html5 test/tdd/lib/angular-mocks.js create mode 100755 bonus/html5 test/tdd/lib/angular-resource.js create mode 100755 bonus/html5 test/tdd/lib/angular-resource.min.js create mode 100755 bonus/html5 test/tdd/lib/angular-resource.min.js.map create mode 100755 bonus/html5 test/tdd/lib/angular-route.js create mode 100755 bonus/html5 test/tdd/lib/angular-route.min.js create mode 100755 bonus/html5 test/tdd/lib/angular-route.min.js.map create mode 100755 bonus/html5 test/tdd/lib/angular-sanitize.js create mode 100755 bonus/html5 test/tdd/lib/angular-sanitize.min.js create mode 100755 bonus/html5 test/tdd/lib/angular-sanitize.min.js.map create mode 100755 bonus/html5 test/tdd/lib/angular-touch.js create mode 100755 bonus/html5 test/tdd/lib/angular-touch.min.js create mode 100755 bonus/html5 test/tdd/lib/angular-touch.min.js.map create mode 100755 bonus/html5 test/tdd/lib/angular.js create mode 100755 bonus/html5 test/tdd/lib/angular.min.js create mode 100755 bonus/html5 test/tdd/lib/angular.min.js.map create mode 100755 bonus/html5 test/tdd/lib/errors.json create mode 100644 bonus/html5 test/tdd/lib/i18n/.DS_Store create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_af-na.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_af-za.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_af.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_am-et.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_am.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ar-001.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ar-ae.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ar-bh.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ar-dz.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ar-eg.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ar-iq.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ar-jo.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ar-kw.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ar-lb.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ar-ly.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ar-ma.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ar-om.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ar-qa.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ar-sa.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ar-sd.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ar-sy.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ar-tn.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ar-ye.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ar.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_bg-bg.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_bg.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_bn-bd.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_bn-in.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_bn.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ca-ad.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ca-es.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ca.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_cs-cz.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_cs.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_da-dk.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_da.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_de-at.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_de-be.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_de-ch.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_de-de.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_de-li.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_de-lu.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_de.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_el-cy.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_el-gr.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_el.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-as.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-au.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-bb.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-be.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-bm.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-bw.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-bz.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-ca.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-dsrt-us.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-dsrt.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-fm.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-gb.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-gu.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-gy.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-hk.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-ie.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-in.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-iso.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-jm.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-mh.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-mp.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-mt.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-mu.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-na.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-nz.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-ph.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-pk.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-pr.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-pw.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-sg.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-tc.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-tt.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-um.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-us.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-vg.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-vi.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-za.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en-zw.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_en.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-419.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-ar.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-bo.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-cl.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-co.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-cr.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-do.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-ea.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-ec.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-es.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-gq.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-gt.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-hn.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-ic.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-mx.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-ni.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-pa.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-pe.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-pr.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-py.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-sv.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-us.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-uy.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es-ve.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_es.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_et-ee.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_et.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_eu-es.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_eu.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fa-af.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fa-ir.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fa.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fi-fi.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fi.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fil-ph.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fil.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-be.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-bf.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-bi.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-bj.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-bl.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-ca.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-cd.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-cf.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-cg.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-ch.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-ci.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-cm.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-dj.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-fr.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-ga.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-gf.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-gn.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-gp.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-gq.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-km.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-lu.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-mc.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-mf.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-mg.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-ml.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-mq.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-ne.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-re.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-rw.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-sn.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-td.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-tg.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr-yt.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_fr.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_gl-es.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_gl.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_gsw-ch.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_gsw.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_gu-in.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_gu.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_he-il.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_he.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_hi-in.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_hi.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_hr-hr.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_hr.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_hu-hu.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_hu.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_id-id.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_id.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_in.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_is-is.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_is.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_it-ch.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_it-it.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_it-sm.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_it.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_iw.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ja-jp.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ja.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_kn-in.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_kn.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ko-kr.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ko.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ln-cd.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ln-cg.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ln.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_lt-lt.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_lt.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_lv-lv.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_lv.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ml-in.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ml.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_mr-in.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_mr.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ms-bn.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ms-my.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ms.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_mt-mt.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_mt.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_nl-aw.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_nl-be.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_nl-cw.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_nl-nl.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_nl-sx.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_nl.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_no.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_or-in.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_or.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_pl-pl.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_pl.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_pt-ao.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_pt-br.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_pt-gw.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_pt-mz.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_pt-pt.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_pt-st.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_pt.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ro-md.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ro-ro.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ro.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ru-md.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ru-ru.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ru-ua.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ru.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_sk-sk.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_sk.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_sl-si.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_sl.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_sq-al.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_sq.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_sr-cyrl-ba.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_sr-cyrl-me.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_sr-cyrl-rs.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_sr-cyrl.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_sr-latn-ba.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_sr-latn-me.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_sr-latn-rs.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_sr-latn.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_sr.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_sv-fi.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_sv-se.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_sv.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_sw-ke.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_sw-tz.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_sw.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ta-in.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ta-lk.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ta.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_te-in.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_te.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_th-th.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_th.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_tl.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_tr-tr.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_tr.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_uk-ua.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_uk.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ur-in.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ur-pk.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_ur.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_vi-vn.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_vi.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_zh-cn.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_zh-hans-cn.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_zh-hans-hk.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_zh-hans-mo.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_zh-hans-sg.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_zh-hans.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_zh-hant-hk.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_zh-hant-mo.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_zh-hant-tw.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_zh-hant.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_zh-hk.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_zh-tw.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_zh.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_zu-za.js create mode 100755 bonus/html5 test/tdd/lib/i18n/angular-locale_zu.js create mode 100755 bonus/html5 test/tdd/lib/version.json create mode 100755 bonus/html5 test/tdd/lib/version.txt create mode 100644 bonus/html5 test/tdd/step0/.DS_Store create mode 100755 bonus/html5 test/tdd/step0/index.html create mode 100755 bonus/html5 test/tdd/step0/js/controller.js create mode 100755 bonus/html5 test/tdd/step0/js/controller.js~ create mode 100755 bonus/html5 test/tdd/step0/karma.conf.js create mode 100644 bonus/html5 test/tdd/step0/test.html create mode 100755 bonus/html5 test/tdd/step0/test/controllerSpec.js create mode 100755 bonus/html5 test/tdd/step0/test/controllerSpec.js~ create mode 100644 bonus/html5 test/tdd/step1/.DS_Store create mode 100755 bonus/html5 test/tdd/step1/UnitTestRunner.html create mode 100755 bonus/html5 test/tdd/step1/index.html create mode 100755 bonus/html5 test/tdd/step1/js/controllers.js create mode 100644 bonus/html5 test/tdd/step1/test/.DS_Store create mode 100755 bonus/html5 test/tdd/step1/test/conf.js create mode 100755 bonus/html5 test/tdd/step1/test/controllersSpec.js create mode 100755 bonus/html5 test/tdd/step1/test/e2espec.js create mode 100755 bonus/html5 test/tdd/step1/test/e2espec.js~ create mode 100644 bonus/html5 test/tdd/step2/.DS_Store create mode 100755 bonus/html5 test/tdd/step2/index.html create mode 100755 bonus/html5 test/tdd/step2/js/controllers.js create mode 100755 bonus/html5 test/tdd/step2/karma.conf.js create mode 100755 bonus/html5 test/tdd/step2/phones/phones.txt create mode 100755 bonus/html5 test/tdd/step2/test/controllersSpec.js create mode 100644 bonus/html5 test/tdd/step3/.DS_Store create mode 100644 bonus/html5 test/tdd/step3/img/.DS_Store create mode 100755 bonus/html5 test/tdd/step3/img/.gitkeep create mode 100755 bonus/html5 test/tdd/step3/img/glyphicons-halflings-white.png create mode 100755 bonus/html5 test/tdd/step3/img/glyphicons-halflings.png create mode 100755 bonus/html5 test/tdd/step3/img/phones/dell-streak-7.0.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/dell-streak-7.1.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/dell-streak-7.2.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/dell-streak-7.3.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/dell-streak-7.4.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/dell-venue.0.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/dell-venue.1.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/dell-venue.2.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/dell-venue.3.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/dell-venue.4.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/dell-venue.5.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/droid-2-global-by-motorola.0.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/droid-2-global-by-motorola.1.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/droid-2-global-by-motorola.2.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/droid-pro-by-motorola.0.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/droid-pro-by-motorola.1.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/lg-axis.0.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/lg-axis.1.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/lg-axis.2.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/motorola-atrix-4g.0.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/motorola-atrix-4g.1.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/motorola-atrix-4g.2.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/motorola-atrix-4g.3.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/motorola-bravo-with-motoblur.0.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/motorola-bravo-with-motoblur.1.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/motorola-bravo-with-motoblur.2.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/motorola-charm-with-motoblur.0.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/motorola-charm-with-motoblur.1.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/motorola-charm-with-motoblur.2.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/motorola-defy-with-motoblur.0.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/motorola-defy-with-motoblur.1.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/motorola-defy-with-motoblur.2.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/motorola-xoom-with-wi-fi.0.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/motorola-xoom-with-wi-fi.1.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/motorola-xoom-with-wi-fi.2.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/motorola-xoom-with-wi-fi.3.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/motorola-xoom-with-wi-fi.4.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/motorola-xoom-with-wi-fi.5.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/motorola-xoom.0.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/motorola-xoom.1.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/motorola-xoom.2.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/nexus-s.0.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/nexus-s.1.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/nexus-s.2.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/nexus-s.3.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/samsung-galaxy-tab.0.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/samsung-galaxy-tab.1.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/samsung-galaxy-tab.2.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/samsung-galaxy-tab.3.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/samsung-galaxy-tab.4.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/samsung-galaxy-tab.5.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/samsung-galaxy-tab.6.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/samsung-gem.0.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/samsung-gem.1.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/samsung-gem.2.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/samsung-mesmerize-a-galaxy-s-phone.0.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/samsung-mesmerize-a-galaxy-s-phone.1.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/samsung-mesmerize-a-galaxy-s-phone.2.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/samsung-mesmerize-a-galaxy-s-phone.3.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/samsung-showcase-a-galaxy-s-phone.0.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/samsung-showcase-a-galaxy-s-phone.1.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/samsung-showcase-a-galaxy-s-phone.2.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/samsung-transform.0.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/samsung-transform.1.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/samsung-transform.2.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/samsung-transform.3.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/samsung-transform.4.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/sanyo-zio.0.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/sanyo-zio.1.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/sanyo-zio.2.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/t-mobile-g2.0.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/t-mobile-g2.1.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/t-mobile-g2.2.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/t-mobile-mytouch-4g.0.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/t-mobile-mytouch-4g.1.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/t-mobile-mytouch-4g.2.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/t-mobile-mytouch-4g.3.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/t-mobile-mytouch-4g.4.jpg create mode 100755 bonus/html5 test/tdd/step3/img/phones/t-mobile-mytouch-4g.5.jpg create mode 100755 bonus/html5 test/tdd/step3/index.html create mode 100755 bonus/html5 test/tdd/step3/js/controllers.js create mode 100755 bonus/html5 test/tdd/step3/phones/phones.txt create mode 100755 bonus/html5 test/tdd/step3/test/conf.js create mode 100755 bonus/html5 test/tdd/step3/test/e2e.js create mode 100644 bonus/html5 test/tdd/step4/.DS_Store create mode 100644 bonus/html5 test/tdd/step4/img/.DS_Store create mode 100755 bonus/html5 test/tdd/step4/img/.gitkeep create mode 100755 bonus/html5 test/tdd/step4/index.html create mode 100644 bonus/html5 test/tdd/step4/js/.DS_Store create mode 100755 bonus/html5 test/tdd/step4/js/app.js create mode 100755 bonus/html5 test/tdd/step4/js/controllers.js create mode 100644 bonus/html5 test/tdd/step4/partials/.DS_Store create mode 100755 bonus/html5 test/tdd/step4/partials/phone-detail.html create mode 100755 bonus/html5 test/tdd/step4/partials/phone-list.html create mode 100755 bonus/html5 test/tdd/step4/phones/phones.txt create mode 100755 bonus/html5 test/tdd/step4/test/conf.js create mode 100755 bonus/html5 test/tdd/step4/test/e2e.js create mode 100644 bonus/html5 test/tdd/step5/.DS_Store create mode 100644 bonus/html5 test/tdd/step5/img/.DS_Store create mode 100755 bonus/html5 test/tdd/step5/img/.gitkeep create mode 100755 bonus/html5 test/tdd/step5/index.html create mode 100644 bonus/html5 test/tdd/step5/js/.DS_Store create mode 100755 bonus/html5 test/tdd/step5/js/app.js create mode 100755 bonus/html5 test/tdd/step5/js/controllers.js create mode 100755 bonus/html5 test/tdd/step5/js/controllers.js~ create mode 100755 bonus/html5 test/tdd/step5/js/filter.js create mode 100755 bonus/html5 test/tdd/step5/karma.conf.js create mode 100644 bonus/html5 test/tdd/step5/partials/.DS_Store create mode 100755 bonus/html5 test/tdd/step5/partials/phone-detail.html create mode 100755 bonus/html5 test/tdd/step5/partials/phone-list.html create mode 100755 bonus/html5 test/tdd/step5/phones/dell-streak-7.txt create mode 100755 bonus/html5 test/tdd/step5/phones/dell-venue.txt create mode 100755 bonus/html5 test/tdd/step5/phones/droid-2-global-by-motorola.txt create mode 100755 bonus/html5 test/tdd/step5/phones/droid-pro-by-motorola.txt create mode 100755 bonus/html5 test/tdd/step5/phones/lg-axis.txt create mode 100755 bonus/html5 test/tdd/step5/phones/motorola-atrix-4g.txt create mode 100755 bonus/html5 test/tdd/step5/phones/motorola-bravo-with-motoblur.txt create mode 100755 bonus/html5 test/tdd/step5/phones/motorola-charm-with-motoblur.txt create mode 100755 bonus/html5 test/tdd/step5/phones/motorola-defy-with-motoblur.txt create mode 100755 bonus/html5 test/tdd/step5/phones/motorola-xoom-with-wi-fi.txt create mode 100755 bonus/html5 test/tdd/step5/phones/motorola-xoom.txt create mode 100755 bonus/html5 test/tdd/step5/phones/nexus-s.txt create mode 100755 bonus/html5 test/tdd/step5/phones/phones.txt create mode 100755 bonus/html5 test/tdd/step5/phones/samsung-galaxy-tab.txt create mode 100755 bonus/html5 test/tdd/step5/phones/samsung-gem.txt create mode 100755 bonus/html5 test/tdd/step5/phones/samsung-mesmerize-a-galaxy-s-phone.txt create mode 100755 bonus/html5 test/tdd/step5/phones/samsung-showcase-a-galaxy-s-phone.txt create mode 100755 bonus/html5 test/tdd/step5/phones/samsung-transform.txt create mode 100755 bonus/html5 test/tdd/step5/phones/sanyo-zio.txt create mode 100755 bonus/html5 test/tdd/step5/phones/t-mobile-g2.txt create mode 100755 bonus/html5 test/tdd/step5/phones/t-mobile-mytouch-4g.txt create mode 100644 bonus/html5 test/tdd/step5/test/.DS_Store create mode 100755 bonus/html5 test/tdd/step5/test/conf.js create mode 100755 bonus/html5 test/tdd/step5/test/controllerSpec.js create mode 100755 bonus/html5 test/tdd/step5/test/e2e.js create mode 100644 bonus/html5 test/tdd/step6-cc/.DS_Store create mode 100644 bonus/html5 test/tdd/step6-cc/coverage/.DS_Store create mode 100644 bonus/html5 test/tdd/step6-cc/coverage/Chrome 24.0.1312 (Linux)/.DS_Store create mode 100755 bonus/html5 test/tdd/step6-cc/coverage/Chrome 24.0.1312 (Linux)/index.html create mode 100755 bonus/html5 test/tdd/step6-cc/coverage/Chrome 24.0.1312 (Linux)/js/controllers.js.html create mode 100755 bonus/html5 test/tdd/step6-cc/coverage/Chrome 24.0.1312 (Linux)/js/index.html create mode 100755 bonus/html5 test/tdd/step6-cc/coverage/Chrome 24.0.1312 (Linux)/prettify.css create mode 100755 bonus/html5 test/tdd/step6-cc/coverage/Chrome 24.0.1312 (Linux)/prettify.js create mode 100755 bonus/html5 test/tdd/step6-cc/index.html create mode 100755 bonus/html5 test/tdd/step6-cc/js/controllers.js create mode 100755 bonus/html5 test/tdd/step6-cc/karma.conf.js create mode 100755 bonus/html5 test/tdd/step6-cc/phones/phones.txt create mode 100755 bonus/html5 test/tdd/step6-cc/test/controllersSpec.js create mode 100755 bonus/html5 test/tdd/step6-cc/test/controllersSpec.js~ create mode 100644 bonus/html5 test/tdd/step6/.DS_Store create mode 100644 bonus/html5 test/tdd/step6/img/.DS_Store create mode 100755 bonus/html5 test/tdd/step6/img/.gitkeep create mode 100755 bonus/html5 test/tdd/step6/index.html create mode 100644 bonus/html5 test/tdd/step6/js/.DS_Store create mode 100755 bonus/html5 test/tdd/step6/js/app.js create mode 100755 bonus/html5 test/tdd/step6/js/controllers.js create mode 100755 bonus/html5 test/tdd/step6/js/filter.js create mode 100755 bonus/html5 test/tdd/step6/js/services.js create mode 100755 bonus/html5 test/tdd/step6/karma.conf.js create mode 100644 bonus/html5 test/tdd/step6/partials/.DS_Store create mode 100755 bonus/html5 test/tdd/step6/partials/phone-detail.html create mode 100755 bonus/html5 test/tdd/step6/partials/phone-list.html create mode 100755 bonus/html5 test/tdd/step6/phones/dell-streak-7.txt create mode 100755 bonus/html5 test/tdd/step6/phones/dell-venue.txt create mode 100755 bonus/html5 test/tdd/step6/phones/droid-2-global-by-motorola.txt create mode 100755 bonus/html5 test/tdd/step6/phones/droid-pro-by-motorola.txt create mode 100755 bonus/html5 test/tdd/step6/phones/lg-axis.txt create mode 100755 bonus/html5 test/tdd/step6/phones/motorola-atrix-4g.txt create mode 100755 bonus/html5 test/tdd/step6/phones/motorola-bravo-with-motoblur.txt create mode 100755 bonus/html5 test/tdd/step6/phones/motorola-charm-with-motoblur.txt create mode 100755 bonus/html5 test/tdd/step6/phones/motorola-defy-with-motoblur.txt create mode 100755 bonus/html5 test/tdd/step6/phones/motorola-xoom-with-wi-fi.txt create mode 100755 bonus/html5 test/tdd/step6/phones/motorola-xoom.txt create mode 100755 bonus/html5 test/tdd/step6/phones/nexus-s.txt create mode 100755 bonus/html5 test/tdd/step6/phones/phones.txt create mode 100755 bonus/html5 test/tdd/step6/phones/samsung-galaxy-tab.txt create mode 100755 bonus/html5 test/tdd/step6/phones/samsung-gem.txt create mode 100755 bonus/html5 test/tdd/step6/phones/samsung-mesmerize-a-galaxy-s-phone.txt create mode 100755 bonus/html5 test/tdd/step6/phones/samsung-showcase-a-galaxy-s-phone.txt create mode 100755 bonus/html5 test/tdd/step6/phones/samsung-transform.txt create mode 100755 bonus/html5 test/tdd/step6/phones/sanyo-zio.txt create mode 100755 bonus/html5 test/tdd/step6/phones/t-mobile-g2.txt create mode 100755 bonus/html5 test/tdd/step6/phones/t-mobile-mytouch-4g.txt create mode 100755 bonus/html5 test/tdd/step6/test/controllersSpec.js create mode 100644 bonus/html5 test/tdd/testlib/.DS_Store create mode 100755 bonus/html5 test/tdd/testlib/jasmine-2.0.1/boot.js create mode 100755 bonus/html5 test/tdd/testlib/jasmine-2.0.1/console.js create mode 100755 bonus/html5 test/tdd/testlib/jasmine-2.0.1/jasmine-html.js create mode 100755 bonus/html5 test/tdd/testlib/jasmine-2.0.1/jasmine.css create mode 100755 bonus/html5 test/tdd/testlib/jasmine-2.0.1/jasmine.js create mode 100755 bonus/html5 test/tdd/testlib/jasmine-2.0.1/jasmine_favicon.png create mode 100644 bonus/hybrid-app-overview/.DS_Store create mode 100644 bonus/hybrid-app-overview/WebViewDemo/.DS_Store create mode 100755 bonus/hybrid-app-overview/WebViewDemo/AndroidManifest.xml create mode 100755 bonus/hybrid-app-overview/WebViewDemo/assets/content.html create mode 100755 bonus/hybrid-app-overview/WebViewDemo/assets/help.html create mode 100755 bonus/hybrid-app-overview/WebViewDemo/proguard-project.txt create mode 100755 bonus/hybrid-app-overview/WebViewDemo/project.properties create mode 100755 bonus/hybrid-app-overview/WebViewDemo/res/drawable-hdpi/ic_action_search.png create mode 100755 bonus/hybrid-app-overview/WebViewDemo/res/drawable-hdpi/ic_launcher.png create mode 100755 bonus/hybrid-app-overview/WebViewDemo/res/drawable-mdpi/ic_action_search.png create mode 100755 bonus/hybrid-app-overview/WebViewDemo/res/drawable-mdpi/ic_launcher.png create mode 100755 bonus/hybrid-app-overview/WebViewDemo/res/drawable-xhdpi/ic_action_search.png create mode 100755 bonus/hybrid-app-overview/WebViewDemo/res/drawable-xhdpi/ic_launcher.png create mode 100755 bonus/hybrid-app-overview/WebViewDemo/res/layout/activity_main.xml create mode 100755 bonus/hybrid-app-overview/WebViewDemo/res/menu/activity_main.xml create mode 100755 bonus/hybrid-app-overview/WebViewDemo/res/values-v11/styles.xml create mode 100755 bonus/hybrid-app-overview/WebViewDemo/res/values-v14/styles.xml create mode 100755 bonus/hybrid-app-overview/WebViewDemo/res/values/strings.xml create mode 100755 bonus/hybrid-app-overview/WebViewDemo/res/values/styles.xml create mode 100755 bonus/hybrid-app-overview/WebViewDemo/src/cn/hzbook/android/test/chapter7/webviewdemo/JavaScriptBridge.java create mode 100755 bonus/hybrid-app-overview/WebViewDemo/src/cn/hzbook/android/test/chapter7/webviewdemo/MainActivity.java create mode 100644 bonus/ios/.DS_Store create mode 100755 bonus/ios/AutomationExample/.gitignore create mode 100755 bonus/ios/AutomationExample/.travis.yml create mode 100755 bonus/ios/AutomationExample/AutomationExample.xcodeproj/project.pbxproj create mode 100755 bonus/ios/AutomationExample/AutomationExample/AUTAppDelegate.h create mode 100755 bonus/ios/AutomationExample/AutomationExample/AUTAppDelegate.m create mode 100755 bonus/ios/AutomationExample/AutomationExample/AUTDetailViewController.h create mode 100755 bonus/ios/AutomationExample/AutomationExample/AUTDetailViewController.m create mode 100755 bonus/ios/AutomationExample/AutomationExample/AUTMasterViewController.h create mode 100755 bonus/ios/AutomationExample/AutomationExample/AUTMasterViewController.m create mode 100755 bonus/ios/AutomationExample/AutomationExample/AutomationExample-Info.plist create mode 100755 bonus/ios/AutomationExample/AutomationExample/AutomationExample-Prefix.pch create mode 100755 bonus/ios/AutomationExample/AutomationExample/en.lproj/InfoPlist.strings create mode 100755 bonus/ios/AutomationExample/AutomationExample/en.lproj/MainStoryboard.storyboard create mode 100755 bonus/ios/AutomationExample/AutomationExample/main.m create mode 100755 bonus/ios/AutomationExample/Default-568h@2x.png create mode 100755 bonus/ios/AutomationExample/LICENSE create mode 100755 bonus/ios/AutomationExample/README.markdown create mode 100755 bonus/ios/AutomationExample/UIAutomationTemplate.tracetemplate create mode 100755 bonus/ios/AutomationExample/automation_script.js create mode 100755 bonus/ios/AutomationExample/env.js create mode 100755 bonus/ios/AutomationExample/run_automation.sh create mode 100755 bonus/ios/AutomationExample/unix_instruments create mode 100755 bonus/ios/CodeCoverage/.gitignore create mode 100755 bonus/ios/CodeCoverage/.travis.yml create mode 100755 bonus/ios/CodeCoverage/AutomationExample.xcodeproj/project.pbxproj create mode 100755 bonus/ios/CodeCoverage/AutomationExample/AUTAppDelegate.h create mode 100755 bonus/ios/CodeCoverage/AutomationExample/AUTAppDelegate.m create mode 100755 bonus/ios/CodeCoverage/AutomationExample/AUTDetailViewController.h create mode 100755 bonus/ios/CodeCoverage/AutomationExample/AUTDetailViewController.m create mode 100755 bonus/ios/CodeCoverage/AutomationExample/AUTMasterViewController.h create mode 100755 bonus/ios/CodeCoverage/AutomationExample/AUTMasterViewController.m create mode 100755 bonus/ios/CodeCoverage/AutomationExample/AutomationExample-Info.plist create mode 100755 bonus/ios/CodeCoverage/AutomationExample/AutomationExample-Prefix.pch create mode 100755 bonus/ios/CodeCoverage/AutomationExample/en.lproj/InfoPlist.strings create mode 100755 bonus/ios/CodeCoverage/AutomationExample/en.lproj/MainStoryboard.storyboard create mode 100755 bonus/ios/CodeCoverage/AutomationExample/main.m create mode 100755 bonus/ios/CodeCoverage/Default-568h@2x.png create mode 100755 bonus/ios/CodeCoverage/LICENSE create mode 100755 bonus/ios/CodeCoverage/README.markdown create mode 100755 bonus/ios/CodeCoverage/UIAutomationTemplate.tracetemplate create mode 100755 bonus/ios/CodeCoverage/XcodeCoverage/.gitignore create mode 100755 bonus/ios/CodeCoverage/XcodeCoverage/LICENSE.txt create mode 100755 bonus/ios/CodeCoverage/XcodeCoverage/README.md create mode 100755 bonus/ios/CodeCoverage/XcodeCoverage/cleancov create mode 100755 bonus/ios/CodeCoverage/XcodeCoverage/envcov.sh create mode 100755 bonus/ios/CodeCoverage/XcodeCoverage/envcov.sh~ create mode 100755 bonus/ios/CodeCoverage/XcodeCoverage/exportenv.sh create mode 100755 bonus/ios/CodeCoverage/XcodeCoverage/getcov create mode 100755 bonus/ios/CodeCoverage/XcodeCoverage/lcov-1.10/COPYING create mode 100755 bonus/ios/CodeCoverage/XcodeCoverage/lcov-1.10/bin/genhtml create mode 100755 bonus/ios/CodeCoverage/XcodeCoverage/lcov-1.10/bin/geninfo create mode 100755 bonus/ios/CodeCoverage/XcodeCoverage/lcov-1.10/bin/lcov create mode 100755 bonus/ios/CodeCoverage/XcodeCoverage/llvm-cov-wrapper.sh create mode 100755 bonus/ios/CodeCoverage/XcodeCoverage/run_code_coverage_post.sh create mode 100755 bonus/ios/CodeCoverage/automation_script.js create mode 100755 bonus/ios/CodeCoverage/env.js create mode 100755 bonus/ios/CodeCoverage/run_automation.sh create mode 100755 bonus/ios/CodeCoverage/unix_instruments create mode 100644 bonus/ios/XcodeCoverage/.DS_Store create mode 100755 bonus/ios/XcodeCoverage/.gitignore create mode 100755 bonus/ios/XcodeCoverage/LICENSE.txt create mode 100755 bonus/ios/XcodeCoverage/README.md create mode 100755 bonus/ios/XcodeCoverage/cleancov create mode 100755 bonus/ios/XcodeCoverage/envcov.sh create mode 100755 bonus/ios/XcodeCoverage/exportenv.sh create mode 100755 bonus/ios/XcodeCoverage/getcov create mode 100644 bonus/ios/XcodeCoverage/lcov-1.10/.DS_Store create mode 100755 bonus/ios/XcodeCoverage/lcov-1.10/COPYING create mode 100755 bonus/ios/XcodeCoverage/lcov-1.10/bin/genhtml create mode 100755 bonus/ios/XcodeCoverage/lcov-1.10/bin/geninfo create mode 100755 bonus/ios/XcodeCoverage/lcov-1.10/bin/lcov create mode 100755 bonus/ios/XcodeCoverage/llvm-cov-wrapper.sh create mode 100755 bonus/ios/XcodeCoverage/run_code_coverage_post.sh diff --git a/bonus/.DS_Store b/bonus/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c7cee099556c136f147fc6c08813bff4826e6264 GIT binary patch literal 12292 zcmeHNYitx%6h5adbhpgXDJ{?zA*(e|Vu`I-Dxk7`AXY%CTWAY~I=eG;2c|RY&g?Ew zo7BYkASS-!BPI|;Kt-bw_@!9!8A*%}eh4ZtQU4fX;tvT4iF)pxS=rfkp}}ZC=5Fpi zGxwfzX6|>sxp(fJ1psVG$_)UO0N|s{q&SI+hX8^C$*jcMSss-NsRk*}rcB2oKm-z? zf(-LO8l^qDqJXNHeG%nyh{0BueH`NC$AA% zUh)v|5bzMlMu3eELCQ>q964-DK6FsQUg23gdxhtTj%gjh>w=C9Ida&R+>~s%DM{ND zoh1g^=2RbK>Lf#s9JZxx4rrSLI#)(#g@XL*WEbS>fFWCYrH6orz-R>6T7R5t?*XH& zO-@=-fG^57{mfmB+fu$r%XlnnyPjMOGorUk)ny~y zVkC9h>W4q-~gXI(7QeCzeGeEt=FM zOKH|LrethecbB&TPN!Enw?OywRua;KMyn6O^^^FT}Jtme-DX*9+2x|#^-BLHI zN@8`IMW9DAqlzx8dVg1n!LKQux-_7aVV&R4t*WX6La$8MTWQG5P8JXP?3P*8fxtS} z(wb1Hlzl#Ka7|4>=rpO%qU0#fsTG9I&BOuGbez`B69TI>DWYhi?6=JtZV&=pDZ3Nm za;I{^R3Xq!+g<~7)236mXmKF0fn9cmWLm4@icYumDZBQPP;(32QoermFq>vsW;a?B zij8oXYC^R(Ts5`;@QZ9lo=JOqH^B<%gpKs{+z*e!4mbes!eMw1K7+5}B>V)w!f7}Q zf54vz=*MYTiB(vQHF!PNV*@V2CD@ED*orIgE(~KQuEq^0<3{Yq7~YFpaS-prA$$-Y z!^iOnd;wp<*Kj|+j)(9a{1`vSZ}2#tz#s7x{*I^Z+bhU$`;N@*+7i!@%y8RGIZt}Q z(|H)Y?DqC)LffU!;Nzt>Z>LSKky*TYMwBpQmarszP^^B`# z<1rJC!Z@s3R7$=fTIdiQWOx#~H_r=hV_^0X-9TYu&tnAQp1wvsOlGaRTQ!J6+Hu z2x1X`3fSr5o2hjoCp$Y0&7xMICxo4})siFh`OnAH3-I(S_!fR)97V*5I2p?^h;xaZ zjl|4l*iO7$iFaZb_TW0~#r4F@7;eJNs9_S*#LsQS&$)$t+j)c z@1dMYq|4Q*;7f6md?`+nFU3hZuV7p;#O$bU*p_re=|A5DNP(0!rk*-_Ex(Ooh|=3l zg1%d_uZ@yxY;E1iRB|+O#@G`2c4@%?XwV2jI#R#{%UfvxTWO4mjceTziM)|dFKcEz z^~rZE5M%qxj_LXIT#?ObMd3i;gb)HfcWr4od>%{&9@t=LY_c+X<;RWMx zUVL0U-Y|#$Pmy2O#btZllGm?`&lk{jak`)He&+R?!|Ou&zl99)<;B~7aZiM!;fkrh zvVvmj;N*&6<~^O;xZ>q%aYd)}2XdD2mJ^Gd8ODnVpFMI=amD7AvlgM5qmdn>v1j+} qSdFdWikUb6|FfM&Z~nj1_LkWg=OqsT4*?GW4*?GW4}nV(fxiH#4p2q_ literal 0 HcmV?d00001 diff --git a/bonus/android test/.DS_Store b/bonus/android test/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f8aa6727e23833e475478f37465c797634735508 GIT binary patch literal 8196 zcmeHMTZ_{`6h5oz9$ZPWo|3auNVwm2OZ3SO)+LyF_~p zhaWV#F8fSdGBd{!8S()Ha0uWs_~6ZW(*!9%3XlS%04YEU{0$1=JzF;Gfcw5)rI8dM z1^!C~Rl4URM_D(oL~t$wd90VlChB`)S9I zgpXcd{Z7QwtWfyGmX>ozjvljCR@dZVpIp7~wnX2}ysVp6yyTwx#e>i{cFoILd-iQ1 zqJ7)*w|UsF+o!LKIP-WMCS%my9UcdwUlH9nNOxVm-wqG5R^2{ROTr#fYhD~~^OXBM z;@LxMMILqg++eV|m3NAz!Z7a)N~J>Hxw=sr4(->Lb>Y(HwOe;P!$(h^K70P+<*PSu zwJ6M7Sm4x@Nblw=6g7)(L$o`JRek(zzIR(xt3fww0DSoJ-cy`8>bFI(fOn@gb|yDJ z%gyKP-E)&T5^)o~Fav;NZHx0~!077H+&`NNvsb=JS8^k}G6&o@uwtiJsETq{) zo}3p~7S((#b3WeDIl55%v0VBo{zP_N#Is*8XQuLv?*B?c8c2adQ(##~UYGU%jf3C+ zAKLj*U{Zh-`27m7T-B{sFwWj1@N`I7YdhE4yqhSROLA0{s%*}9dwnP VvcZu?oWVv90!juNNP$19z;{NsDYpOs literal 0 HcmV?d00001 diff --git a/bonus/android test/android-basic/.DS_Store b/bonus/android test/android-basic/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3c6a7ab8b0192a00edd4c301a43ba2666e010ed1 GIT binary patch literal 6148 zcmeHKPm9w)6o1pLyJ`0l(M7?_T!jiPx)g7*Mm!0H$S&eaO*U~mkY++M-6Ex!vme9% zA7c?cc=YJOZ{S^zzWI}-OS|AnMCOH=-jz@UHk5B6CW^Vxt;v$#A6biRESi}A?a85YSgh7Q9l*<&S(Sjxn6rzO9Udu2Y~z1^X` zes|HK^M1eEp|@`K7Yp~qajsq8z4PEvzIgfS^_#cv-hcS`NgoKo->#BN25b0?%35yH zqh4^xC%JO;U;I4JZ^C^)o{B?&uRp$gSKe#$O?doAe))K5-TNmp;o5x1L6N0AJHq*T zZ_?L_Wxz6E8K@aBcZ0KC8!TD|ECZGS!+^XWC^m_n!AhgLIG=zgp8pE zJ%g1-oIxQv6j6r~Q(_Puj&^GNJcE@+9S+14AH=LoOoc+!>X@G@cOafd+gk=K17{i7 z&_h?g|M$+X|IY^5k!8R#@Lw@NnttF9a7*TGUD=#`Ybmy;*rZ6mO5n+a literal 0 HcmV?d00001 diff --git a/bonus/android test/android-basic/first-demo/.DS_Store b/bonus/android test/android-basic/first-demo/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9177d2fe0fd549f801c745f32b490c75dc6be7ec GIT binary patch literal 10244 zcmeHM&1(}u6o1=IYtnd#s3>^ZlPFY4X=*86VvI+n5NQ!Bb+-x4!ge=gHw_X3@#;YY z{{X)~E}p%LUxl6&dhzBT(4z-?^UX&#Gn-UBh+n)3GjDd@yqVeGFEf+(0suy-Rh{OG`fy8tLt*vu2w(GTD@mXt*)dqQ$k98-7?hBP&# zi(v?J)LX1O%A%A#A%!^@!W;}avmrecgU^n37Vi#5QAjEY0YYFH0p`1B;539#L+@Sj z-={09!Fod)ycpeUJt&u}t!NeCp}G=dNu0mjC>bQfQ{=CE5nF_s^@cQ zdTlM@P)O*NRgBQ<^Yigda9BLUX@?ER3mk0w>NGqzjPm(U#+aEJpV*hqOlH|9cVO~b zr5>~^ksYTs`u-cgTRaHwzKHg+AFz3=L0{oUBA{;OqZ8jzZ$el zLCdd(%M~%+l3R`HE4jl9&DsWSCIxg(v<%>0x!J)iGRS)IAL z{FGIgnd^3QuhQvbCuh%Hywd32didz^lc&#~zkbW#7Yup0!a?yIm+!D9(a?C9$?Og^ zDg)aOxUIBNzX7^NL%r~U8A+RsO4IiOpT&{bs!WV3)rbp3LU6&+(6}(~)dx5!TYCVZX$jXCxwxnt=kOPfhOi7q0!hd?kF}xT!hHRsJ(3U)cNqf6N*-Cm2NsS$ftmHqGszOxi&FN4#1>4y{m+138ySoJ Tam~FU|Nl?NE6M-=PVD#_oozy= literal 0 HcmV?d00001 diff --git a/bonus/android test/android-basic/first-demo/.classpath b/bonus/android test/android-basic/first-demo/.classpath new file mode 100644 index 0000000..990a392 --- /dev/null +++ b/bonus/android test/android-basic/first-demo/.classpath @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/bonus/android test/android-basic/first-demo/.gitignore b/bonus/android test/android-basic/first-demo/.gitignore new file mode 100644 index 0000000..1ec69fa --- /dev/null +++ b/bonus/android test/android-basic/first-demo/.gitignore @@ -0,0 +1,2 @@ +bin/ +gen/ \ No newline at end of file diff --git a/bonus/android test/android-basic/first-demo/.project b/bonus/android test/android-basic/first-demo/.project new file mode 100644 index 0000000..abf7313 --- /dev/null +++ b/bonus/android test/android-basic/first-demo/.project @@ -0,0 +1,33 @@ + + + demo + + + + + + com.android.ide.eclipse.adt.ResourceManagerBuilder + + + + + com.android.ide.eclipse.adt.PreCompilerBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.android.ide.eclipse.adt.ApkBuilder + + + + + + com.android.ide.eclipse.adt.AndroidNature + org.eclipse.jdt.core.javanature + + diff --git a/bonus/android test/android-basic/first-demo/.settings/org.eclipse.jdt.core.prefs b/bonus/android test/android-basic/first-demo/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..b080d2d --- /dev/null +++ b/bonus/android test/android-basic/first-demo/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.source=1.6 diff --git a/bonus/android test/android-basic/first-demo/AndroidManifest.xml b/bonus/android test/android-basic/first-demo/AndroidManifest.xml new file mode 100644 index 0000000..7c98026 --- /dev/null +++ b/bonus/android test/android-basic/first-demo/AndroidManifest.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + diff --git a/bonus/android test/android-basic/first-demo/ic_launcher-web.png b/bonus/android test/android-basic/first-demo/ic_launcher-web.png new file mode 100644 index 0000000000000000000000000000000000000000..a18cbb48c431dfcc163fce2b6e27e981f8c09f6a GIT binary patch literal 51394 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 AjQ{`u literal 0 HcmV?d00001 diff --git a/bonus/android test/android-basic/first-demo/res/drawable-hdpi/ic_launcher.png b/bonus/android test/android-basic/first-demo/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..288b66551d1efd1f13dd06f20a67534d2df57946 GIT binary patch literal 7658 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 literal 0 HcmV?d00001 diff --git a/bonus/android test/android-basic/first-demo/res/drawable-xhdpi/ic_launcher.png b/bonus/android test/android-basic/first-demo/res/drawable-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d4fb7cd9d868f1d7d9964f1686dcbc018ef9495a GIT binary patch literal 12516 zcmVAl;2fhX_b_H$!(yr=WHoOzl)fEwqZl|>V1FuJHhd92cP;)+IZb%XWJHo{vS%6?KQsMx!WMLWsBBVA_0ZM@;`i4T>ABg5!-j8KH8bz&}^`6Yx zV|buri=K8jdLyw{MbH0k02-78Fw+6gA^lLF)DI0A{m{fmOL+z@kx!u6?Ey4s--PlJ z1kMW>2pjDnV9LAa8My3(_0_V)T2~_r72LzBBtFHb^6rT*@^C(1@1v}C4aLf(nycHl z=?}E;)ScJ9R`my=a5Y~JLY*E1jp@%|M(<-NI`jZ?&pm{k8xJ7+?tRF-e+!cCUx(Ox z*C77Zbx68+4bqNXgRH)5OhNe-L5bbb$GIa&+9443-Sbpld&yx>!&=>egldKIX<-sS zy>qGOUqJ|~GXFGZma1#b3av9Ux9C5sTB#NZ&|ufk)~$R3C08Fn=A(y@DR>O|%ws4P z5PJlLf_uOhT!QI>li(mY4t9bgU@Q0?Y?CBu^wvZDi3!_oMUC8W z)v2X(m(gHG3vaV;io7ZnAKp>#e%pFD&V!Gjn7Iq7EQ(J> ze+c>PJxGH)kPLUJr2u+AT!C;n4PI~pT;V7vkreoT7Qj4x7Q8>Z0~y@&_tKh9JodbQgAHKsKpOiH z3YdG41-Bs)?m;>{gK}V?8UM>{v`)M|6YfJ1oP%Ka13VFcD;xr6*v~k??g2a4@zff& zKD1yq+%jf1-mzd;TrgppH|QL!USVuMd%5}77=0hYyBq-|FJA%v-%)&vhfuoeKIA>U z0Ws`-HV1{x1I+E{<;n0ADu9J{6n!pQH`;t^gLvO<$VC95a1#9B7YpSooRDl3m(PlzFv>=Rnyss9m4jw`!T*Jql#mAn4AOzrt z0K8$pz#Vo!bAs)UCd1}?*0BDj1+2MZ0?W@E!s3(qF#mU5X7=t$=bAR^BsQ!u`bN~Y zzEk28I|s4$_n_$bZOCTMLnwO#GTYvcmmvYYKNoX-5vHGF>gnYB*D&{A#i$_X zD|kK+F>nU!z)Ac+$G{&Bvp%qY&=Yn)b%E^ei{=C|#uDO@_38H-*171((>4CzD5=g@pCD zpp-cUVc0TGMIqy;h(}>Mo`VoXGzuGv-Ay1CSn_o!1w#ZUb{g#z+8=n|afEgRA9GMJ z9rg`OgI$k3VfzDD*nGzk`mWo->dRKJ{G1tjKZ<`;2j(BvgRXr#(7s(08rG``%9kpi zEbLM=eCtyY@%$}d^VRQy@S2N|{p1Xr%M&YKxVL<>K==X;s{V8zZStz~l5QF!# zz9{Z=OfP|G!Bp&H2;&%@j}8fcm4zTvJEv!6m z1xx=hf!^cJu;TbMn18?=X6@33ncK9Wp--Ky>QxaGb}Ma2ZBv*)=YqEp0`V-eZnNi! zx8pG;?#yYHFE}_DKs%M4kFkG$ngq88cS1jN2ObQbgaeObu#mc7KKF(L0v}8*SYR2< z@k{`O?Co(F8c<$|8?2x~4+hE?ZnVd*Io=sOb%cb=Sr zrvrE3+^zMnc)tg+lhN~Sq4%^kO*?xomSXn9pUet?VFqFE z*%oNtpbhow)S;?Z8HyLGFxef7yOV0UlioT2#QPh7_wj~nPOdxe2b|seIE>kTZyNO7 zw8H+}6#A}BfyNEg(t(uTU# z>QMO`0ieugckmu1*Ko2D3dVi&R;3}b7`Eh$%`fXNyVP#E<=4OE)--nQ6Dz;^!97cu8SHn8juD_DHY0u~-Ih3-Sf(6!eHww)@1n-BhgOV>_9+tP3-U!sEP zM-{LLL-7I?0)R=J!PyW|JdyiWMFEL`rKhb`R-JR)v+lA7v-;v>w)dPd_T`4OH}5@* zcG4F5PDR4H)1fGyHT0gr-u;3NrV=~!>d8X8;y^uo%_X6&zUY8C9#hRZ;_-Iq@wW8; zE;()qi;kMZg2O2OK_e930A}yfgN|(mFmJmn%v|FNCG$0*VyP;6zZ!zjfRY882tb*M zuadbLULfV>$me|WRzv|!KYMr|FFI=B`P<3KkCvaA%q~4?f-RxG&`ud(ku*dzf<-3` zVbO8YtDC{nljan{^0QX3;+ze&mFH|}Y9V4TKST06Ni*o}CvC9Hv4+J|c=Y<;&0zi^ z6PUN(2<8y+ck5xxsRM0Wbf9SiNjnevbI(Tecm9!uvOQJL= zam;t!Z^KeGc@aIw?0;Br$Z|%{5ev5Gs42Vfh%OdJT{4kE&oTWWGk`_M458;J+A(7U zfsjs^qOj&eW`W*qiD#iLIblgXounBede0H!@h^n$+GhxzyA5F0P85F|5q}aiZ`6jy z^_oz(h5*3azf2v)SHt|T2KilTklDs#;wohrf4;;9&(w)y--A?rS~qK>_*zu_dKABACAOZusE9?YYrkB|&7hZ_!=5t=dHhvx%E_KIq=*rO~4Y~}_u~Umqq_cMun}hSS=PRN2D*(TZ3rTgd5LqI{c*Tng?0v)odH%eQNg8?~JXyzD z{wct!FUXlcwCVr<0^wC}*z@rXsQFU(VCGRo?VK;%_ zaRt(rpB2Q9lg@(dX+ctFGD(q;8*sa7i3q^m~;~R+Z>okOEhlr19XT}Pl z_g5@ahO#9j0+cZSD?-*R1xRg@XJgCd`@;)4e*|T7y4)fsD3JO^UdKs6rtNt)WzAK{ zxN;Nn9{j-uKHl}z_Q8f*mY0{DGF;iQOWV4wPw%rg0)hOJBf$UUI^@`21OCp-kaqt% z6bxKqvzgtGT?hNF+hD6{cXHld+o;()%)cfPKwd~nyTQnmYTfjNBI9fE1*U9Lg)XGk zsX^9E9u&=2p)FzEYAw1vK!hb;-LV6WM8Gbg&E73Ea^EYqgFIdcs11R&ZqXjf{n+*N zX(I$JEWDbS_cfq&p*rMsszQ3RGQ?FXK~$j{gl6bKK&&C_5v23T#+^IUda4A6Y+{B@JdylAv!p z9<9aMebEw899GkRA@=5e6V6Y7qtiB)|{(4W_(UzAu2u2uNIFE+|oLr+{^4MP-yNA8L*?}x6ke2KP`(HrC@CT4p{}v?VzX7p{U&E+zU&60qe~00t z{|-No{2YE9@frLu{8RY;=TG6gpFe@`e)wgbARzHK8>#tz%KN{Sk#K0#-971v@veVO~*vbCl z0p5ItZ{sTEcVL=g>(^>Bt(&mGZ_$UAjYN1&+DTy%XH)9s8K0C1%N&BnjC;KRFqO>i zb05{T#=Nt7g&I@6LYb|>!dA0V1FDzf6Iw<>TorO>E3w#7u>SmsryQqA{M5F=!Mb&m z{{01qP3RESd)5@zUbchvS0=;C3;6XJ3%uV779O&OuH6>UvDqA&R+~cgQX?pvuMb6Y z^dNWUB*<*ig7i8~NU7F<#7Z@YE9XH>nG%{JL?g`TQZB@nb0NM;9ulh+Ah}Kf(wY>> zfQ8RV8S=VFx>JVIMc4%`R-to1#ZuucP%xK=k5j}#EXM@rNHTW5W3#)I>L(6 zm=aD+#wpnrmK?Ljsn`;Fez(AgG{cG57`pZtV)vv^+fz~#8rEszEI?L3Rj~-8@bh>$ z11LgTqXGpNS;S$z6UVWZ9%8u!KxnS?{){#`wrsHqTh*&Z#V2P1uV_93=ul+iDhL3{ zHv?eSCjSw&y;iNo^HrF_ZUvTf5e3BNDWZod;u9iX$7Q3-q*$+5iL2($660$YxtkQt z)4E%>Sdpz{RErkVwyoN6fFKXd0`2h^?r z87;zSiN#0?&zEJr;>WV)?xWHPfRJp?@$?p17GdFYSEJ&S1v~_T9TdWASH$iK0YqU0 zxV znjWa3;4@IDDipnPnNWBlSjj?V>a|3C>MXM`JSU@jWI zpxjRKg5+_eCjg{bkLYn%4eSs=w})}gOwGFm^SC5sv89W7Ac8=mK?Fi%wX4;r)vQwc zhub(%tq9YU(h=@+aBKckD^+NH9=M&NLyU_b* zlV}wVV5yjX605O}lqf+c0`QC-$C|s16#~eXIg{EX%VNG~Y0X$h(vK?rnIwH>&QxTv z_Au_zl0A0b;^J>40z?4v5I}wx5nloF<|ttPSHMCh56Sg%EROW7d-S;LhV~;RE9Q6@ zXSHhH&7C91V!zCmEL5WFFcr&q)PrX%SD{9RC9+gN&qIULj1{EtsnIk-2dKrWFn2>B z96i4V`UjrCqbIjv*YPfBUg<;y78Y1l`Zy|l4-sDI`BZ!?ws~`ugx)`tez1#ygc zRjdFZIULp_X6$nSK^fAo0$3^pK!6gE8Ep#aY;qU@5}oGmBS*b<0Ns7T!)tqOnhU#C znY=mjEJC2-ll2tr2q2@COI{EgRl)&`fCr||W96&n`55tAH16hf%8{Bu3wP-v9+WRd z04OSfP=x@VTQ4!;f*FYv;>k6=hA@9~82o;A1w8A2NcVSN94y>_bPaYKodxY{yr8^C zn~E+n()keaNvD%Xyub6M^wTT^5KjOU$qNBQ69D5W0RME!GpUUTV7@Xb#I*Y%fL{Sn zBFDH!Oqla#0Bj2TspdDk8HMvynA|yB79jw!T=f3z4tdf6VFU;PxJQk9Xzn7WSlKnz zFr!KBZuTr$Oj(NfVif5zK-rQZ2)`i!v`T8ig|gB`iu8pxt+0XKUFqoYtKrGBd%&_R zi2gm7UvwYKz}<(JVfXR5FmFRRR4y_?k$BWWi06~rxt+pJjiw)LI|+c~I(dkr9ncE^ zmabz{rX@}KDIk5~)szMfIu4J0Il2e{5=j}Y3T$LC0We+&!0~mrp*urD4eIt z)x;)q&{{jRn zG6o(zz6qxRPev*Dj0Zwa@7Xql@LPQ}Kg0iGpw@3uwJUW;F2tWWS z^&FDENGBw$Ej_{+fTXhYW_cEeHP$U+LYt|F*oZd-zySfMF*&ojZ1yZJz9{1TTzpYn zNNbkEmJTDJ7$YEZEY^Tum1^dCtE4rkU(RTg#fZVy6}zUQ1;R8$Ae18noDuLvDZp== zD&XP6dsIpW1!RUi|F0ed0K+g80zr5A>N%+G42PtKiPZZu+ep27833sPN|=J=gaBN{ zg5&t22p9seP?GTuH%9ulTAnXrAkr&SU*^jc8K>EFB}3eTL>VmfWtb6jH@@X|K;b`4xoEY z!Z)=`?Q;o$>{)Uz0HF7i4oC<9Q&15BFpjnM6xS`EJ57lKXyM@FaUQL;|{y_ZGeZ5?t?%uNIm-Br6Q5n4-O8(t=rdO<+=sn zA7cVWP9vbWE(*?FI01W(ECYVC8VV;z#KV~d0n`WqB$Vkvc%BM+^H_|4alyfHdc%EF zC)`e|&M<=5$U+6yHB9Qw0jTetl1Bh!b;z+I@rn0mU;$2T zl*67{2*5pREMx5|u3Jq2)N5WzYv$nNg#gF^N1~v3Az4e3hx%R%ICp&)_4q--0BqT} z08%Tgz&8P-q#+Xa9NY+Z@7=}%D;V-__SN!B#TUT!8&_b%)@6`d-~sMovXEZx1UvSx zcn)UE-X2J*R-ulPhTczFP$2*%A%I*0Kpf1S#|1_5&BXmuCq7K7lR*Had*e~@ixvnM z??^qt2x6m(lv($1*_ug?!+(1H0QMk&6$F4flhrQAX12>A067F8N4+YgK^EextGBkp-TOC&9!mfW zz~!u7{j^4rlx_-GsCIT4DBmia#0c5la0VLNG0J3a&0qrIj zbH`D-rCnZ%X?2>H)0$-P@dyBmc7E4T8k$cQ^W*A@bE z*rr`Q5L3c~#9CRJez0Z6h!p~eCjfGI;1Vv*m^zO2j6neYX%qWN1Yo|W0E&hNJ2F$y zbuauGkp%=Ar%=!C+izbh0J^={$N#cnxl?jMm-^CVt(iDu z<}ykztI?X1R;O_;bqE0InnY1+PJiCkO3}#t~_1F zE||xKszruy>hhL98MI!2c>3%ioVu_VX7;3kSF{XxNAqCrvI;nV`6yi*qE|n&|2#Lm z3?Qmd5hq^`6(2h`k}@H-T$ut0$yNfFFpOLmapzD1ApKPUMErtz!Xb>z5-IfxSh$s0 zmk>_D8;gMF0I;v;x1sngF9EhWWwdcv>iq~Htx1*^;KUjZ#FWcGNS-8vDTuZ6mb9Y)YBWx# z5CE;DaK8XRma_A@xKP>ip8+5T>4Yv{Jq7vo&d|~m3HKk~q+tHH*?<(`_1nAAITYw~ zOstk00)SCap#rhRx)7YDKmnLIju!$*K>#%}bnB5Uz7-4sAZtowDI>X70SmVZ;~XlT z!ZjK8#cK!9cb5NI;|kZ{!Y<8wC_bAp!_Lfap?bAp5E$1zCHHx67`vluoPD zKAqek!(y!Vi9(da0*JE#Pv;?Fh~J(D8S1AFeTBY3<@Aeg>eev zq;gGuc@qHI5P*Ad!5nP_z+uyyIgr*Y^!{Yb|D?D@Q2-N$0EpXVH(5%j69Dx>0HkFl zb$~_zS<0Rx_m=@&LIBw{PSCs%0X+H(05%W+BuX(=R>=whloJ5z2tWq{`3N9{q#%hY zVJSxHI0-WZK$Zx=TvC7$z%05FiYZqCLUU9EPC+tBJnLWo{#q~SeGXuydtkvFt-B%s zsZAW}{iFcL&yX3400KaaHGc(wGzCCfRuO<)vXRp%2NgXAe*pkPBY*-}@K*t}qhP`a zh{NJb(oak|)`AL6h%TIj0JsEzz|>`&Wk{N##&i*Yb_H5^iTHVQcoaZ-i#*xNWJ9x5 z`<;V0krEQaUhiiQk*nhN>}mM8d4>B_jDVY%e%Le=Kc!I!fD|hN;CTdui?L?zV)pz7 z6REUXtrHjl49*Hd0PQc*5CyQ%;4i13?CSp;fDi;gBY+fNwCFOd0p*$yRiFg{8FC0f zY{1xgtVvLc9!9_f3LtX`Kpq94jL%((E@cn^A(^WEQvzhd-Uxs`==-Q?g_lRcoJrTo z)dHy~eoBLkF#X^YjjNJ@$YLo7%AUZugpXm(+{7klG+Ia^fFnr=Agx)BA%&aF56=P2 zmV@$zhH&!o=KpB*^Z%NHo;`aCD>n)wAf}9ixnGv1pO`WfvQi&ni}WFwuLMrP;uHXh z01*HZ0i^H}@pC)r)ex9^$wHnIMu7Sgw-Ci34rkaWZv;T|N>8`KIoj7S{jgO0dKn<8y)k z-J;ub02l#H|3L%@ThIX*80d#pn-D;*EP6eu13~~K0+OqYAf>_&OM zrRizH6hvCioY_2VKb7e@t6hn%B_+;KX2Y_y?|Ve3dZ9!gzGeVGFFUVU=4xHosdIsd znNrVTiTH^_-XBvg4dI0dAd>(PW6V4xZ1NiIB{S-E5da4P$T6gCrGQ!$q6IqA|KGlI9eUTyf#76)bPh@MdRYn} zh5#tVfvj8~5=tx}EK3Kb1Wp(*m?CEG8)f>vZ<6fc*a{BIZ&hTnJJ9=QtKf51!ROB- zTbT^j4nahg$uXZOJ)<}BrarPBRMzRJ%5R#qEwP#-K(A*KX2`HZ;!6yu#J z!PxnYIcMr1!6|L`lFVzf`aPvykwLFv$g+h90EvR^*}_N&D-;K}i1CnH=?{mFY<~_y zwCDSe5kLX_NdyS{ezGim4Yu!I3vrn)VC?)W*!uknp?T7;q@d^$A%MhEONh!b1E&B^ zzp3LmOY;5z-*`pOuso#;8I8sR1+y##1+y)fybd!qqfwuUFVh-`$v3$cm};2i>d*V} zO?~#z2Zb#*Uq$4phX-YH&f*j}7@nuX1ZQ$t|8!Z_CsB@ZkC0>Rd?#EqaTy(D9wzZ= zV^4@=)m*PbIc@qF0SeCnkd;&lfJDJ;vYagkVFeQ48Z{hz|6zf)e+$6&jD+n;ouQH9;T;Fgzy6C=P8Ip0=cd zODrKK*9srceQM+&VLA+Z`d~ii%fL((_vA{GrG+!y{wV95db6nA^G;f|&H1Q&y}s}) zo!Gz>jgfEqT{0g`OH%yFD_YjaJ67qp=?Rn0_{3=5_KHxwJ|p4_fEuz~N)NXb}~y z>0G>WN(f*9nS^iPbUa84?c>J}VCUZTP|=ux5H-kD3qDB_*p=aQo-0kgpX^shmvU$n zM3*9f5(2;wQxF2kK>*Xa_w?+?X_MDU1}pN>mf=Ne6H;rl{0q><@&mW$on`2C|KD0$x1sqj{2NDvA#b3M@>sZ z$JQabL;$dnnU;)$pWF$3hcTR&h5c9W1N(3KY@t8(2I4iv9kE}Ow)-aJwb%`&*7MlZ z2I2aVC>7C79kR3b5&*iv(;`Q&vLM@>DfM!6@hq%hBDjQ)1-}?=2+dN0gmNwLickkD z@6iZ|eADSFx7LfBUTwcVu1tL(u2PmE%ho9k9C$e$iA)4Q1c6*@l-9(30b+(c`12*O zPE3SIoVur{OOlIfshGsuspvJr%T35tZ{$pj+#fGmekM^-CWn!NlY5~$if_$Ep!a)5 z@Xp!>NLZ7%s1AE;KGGONwW=!Y)AVu&*Qk7*6F3MBkaiV?V3TTu+k(mULV=0UB1>&-P=-3|pQ<|GlgK?gHI9?* z6(u?H?fpbu0-?eG@8Ow~3;w4b9eM0{P0fr>Ajy{gP!pNNYXpZT}>7QTrBApgkrsTQ|rr ziP!HHD**xNT!_j?Pc1Wt^s32_S>s5JUo#oft8EdC^$;9OHlxmp$*8wxGaGE#tVTOF zyJ<4o6v%0Ig4||j$Zc_hycT!7?LjT4$pf+*T!CNf2&pq{Ag;t1BJy>vhUaO_56xBa z56e@NA#bOBsgW4=mO~JJltJ0dC{944?tL@2U%P+LSf4^C~EVC;`ZrKHY)%s=LAFL+z_;2sOSoWvQ9rJ zYM+V#oFKW<67#(d_$8^bUJ;tClRvL%T8yF$c`xug_bKY4{<(g3m`p^L{yiI?5n$r- zGplF+Bk0=x1p4;F!NhqKSWOj&$^H`H5-NpYFo5tJT?D9sLaV^kXhm=i;eeg*1Tc3O2g4~N!Dz}@*3LtnwQy9- z*Ki#5J(<+sxsR|H0jTYcn3zy%bjLk<3^)dlVr_kY1#^!PVB|Og^z24}j`gpgZTTx` zm<|VRvoWA>$1kZoi$0F&LI&nqL3^0-&KgVoX|%@g@I^aWE}OoOO>D zLlC3E)@L+Wc#H;9m(d7gG)4r9XfF;rR-**!dZYB7PvJwy!Gj0C@Ch?oq+#|wqiOyl zqhs?k7&wd=5?qXWzqz{@-W~%MZW64+Gz8!xpZ3lI5FJem!$xH_m|h6Yp8!GG60Bbu zS%4b{?onf5N{~3%Oe5lrK?tM3c*_@)>KokiG;%~lDhO>0-eiZ21{lpkM z4#!kBiUOQGeH_A+07o>300bK_k#!5y9JKL305~Lek;M}syl^6f zl7`p{Df00K5LF@#5ryQc3Tc?0 zhTTuBBshg&B=|~#sk8W>0tiYp?J#p2F0l0am6_~68eGE0f=A2*m>Mqy(-Nh@2aN#r zis7(RBPR_`_U63@FuN~)R9TnhMY5S6S1HBDR*;=4vSA_(Vfi=@WXoVWl0pxb0H+`+ zuyh|M(6f^GR{%bYOt`{1WDE-LJkY4bibCx z2<3n1f+&E5{K@T3A>#zjVPhDtxN+c{DhUC6jHGN?G&u;$l0^v8;Frv0{o-^6o&4Sd z7*@9`@aN)A%e{#;vg8wM+1N@1K%)R5lyKx#%$Az9mxC=v>X>4U*S%Gi33+i2}7`Qyto02L6^ zQ9`l3t#6X-UEdT*L13l~OT-T^An$%xf~aC1y(B#(N1h2tmlyaYC?9eO;Tr1c4f|-= zyZUDghYkH1!^CnOgUBL<{V}CHHlb3JjVo7SqDz#Rm{L_HrbLU0D$rqrGBg>FD7n*9 zrjK_KeU|4x{;a}6o3BDL6>7tCd5;sy44C99LpG(_kWH&IWi#q6*tA*;Hm+2k4bD`) z;+-Is=oK>Zhj&-}mnP!aV(u3KnR2#4nY@)T1qKh}i_F-#B2zZL#DYyIv1MZmteypD z=2#U8&jev7G12&Pn%(UB)8dNu(;iWEuZ6y=Evr>dOS<2FxwTD zqaN;`EIs1=pD=uJeBc;0>htMIQj-2D3R8nJ)N8}C^p;2EnXHP=H*E>aHVB%Ytf}Dd z&--65{~)WHk>v{CCRM1brPUe)X1Cf@6t+9J7Ie6jWi;7(C0Clr#uvW$bGh%2mmrX| zLO!$KoiFjVKcDww3}5d@{{o|L!onmz9ZEU>QLz*iWpXV~e2dms{5HF9Nv+`z{XKwp u_AlqXKi(hjkN3y>U-hg-(tR006L*6lJwv=al~q2+HgKpZw-e0Khy&NmfeN zZ|SfV)qv3O`uSv}Z?K;4m#C5yPpW4YgO-$(lq#GK3RT1%gz!rh!x2z2AhI0c$Qujd zkvIK3MWoz_6}^9<$KNVT-EDk)eQtgXKeuO$`;*s(l^#r=_>VXL)4w^G_r0VFR#=<- z|4e70dw|^=VBG36>BHDe=o14#9E}Q^_G^*IBJ}vZx$4nbDmm6a4vD|eaGU_<!>16_~!nINT zo&WOn<38W##Y|==S3R1h9L+l8f8*OPauX-rq0hD$K$?M&=W&Tu6t^d=uq_ZcBv|WE zXuo5+LSsI^K0D)>U$juOG*|g}YYBdXcLltp2`d8@I-R>qHy7xQIeb3fJfdHiwN;RL zazCIF_?AU|S+WuQysGps!g~ z((g(4R)PY513!%J#u0cInoBiC61-4To!;LYjxq#LCR=QRvxREHn=&Z1Qd4+N~s-{ExI8kEK}3A@kqlDQolh z-3p?6_jaBu8}`ZF-KOThkIkQ1`6U?<`HH?Qe+EdkHi<6{VY)|@{4EIeV_jRR5trZ_o_nr+_!cyebpITmx7(>j=Oz* z5fPF0tyUu%u@|aX;Wa3};iF(k+}U=NBbG+y5sy_CO?^n?C1NppD3}Soj`c4U$5bXP zS4cjURC#H&qf4j;n!XpQ>xWI3DC>uU#$O;UCKk=|6Q_PdAqUx)7T_AOK^?gRyb>WcO!;K{1&l%cjruV~mMejVd&Xj*nkTq>O+6Gz`%k}XP4nUC#!Pqr(ZBOPy6^xv^H!_`^ipDAgQ7= z8+groEnBT$9^~Ws-tMkpE9#H?Ug_O-&6CWQ{pWp!Eh%f-Te7dr#zUIh)`j49{r3EM zDA=aSn=mM0s_%EeLB7$M(4Hn)7CO(-i z^crvEy=ypgAQ4l2Hf~PB`bd6+`v{qvrFsN?AU@>=_yEjIYI_~IkSTuV6MuW_n2h@E zlPPNQ?|eh|)7-cB*P>jU0x=wG+g}BPNLvj&zXg_8Mn%P5*aTNp&67G*qYn+ZJ<)mI zK~9!u<;(VsMi=KEsyBbt{8JX8jR2it?%>(QZX$-PdH#bUPwUZ@R{8T6SS)SQ0Y&W4 z6FO&zAVTIS@4_nF&`LY}bHE0|(tj0n|6Aj~J&eiy{U6&~zqpSMbdtl% z3Ij-go-8}sUQ6(O@&^Ms0?2j*IBk-bRhlDz|sy@A392cUmcUxXKuHR1e8H2U?#owb#VL6|;IU1gR`?ljHets!HEXBSEL3tp-g$8Pbtp#IfnIv5vZLRffV55lQIg^QT1JxHZG z{OO8ed}7ocO_Aj^&8T8COE#R;Vx^DDc4MSgvuyhf>NWh3vD;oOR^3i}Di#T*Q02R; zDMDaaSWruY1GBNL&0tJjX<_JHcR7K$@r7mdVhKDZ?nB+?m1!Nks(J#XDjQU~N?V*6 zTTh;~UdiDf2@!^n6v=n8v17EdwhQ)<6j2aA8ZZwKWA>&yj6@wWL8?m=xNzr2=+thD zVSH@ReSZL%c#mNxW;<3bY|*KIBD7}OJRT%JiJdMH`~0y0RVQJKK(T^Z^Ece-YtCbi zC~l<98!Qo8l1zGBjc1NXbFP3~-A5y8kZvSAgO)q4+r5w%`T-RAQPCvgR1{K*hwLRjR_SJu$|c95h=#6B`Wj&h{}xig5;*(piBDCt`*|KsV}(_8kdFI1t|Mu)g4YJ z*aO0+Adj_TZN-UoUI<|+7hb_5W}b%&6b6O|=0sCl^v)*18>TblUD8hvcyuj}i!0hN z@Obg!`rhCJG5ZU7P^)!t2qURkaCLHM@~wi``L~dn8K;ZB4Pzy>6=24Qm~3=-+Aciw z;Q5GCM(oP~>LS#BIGH~Qu-mmcp*eCHbX4-~Xohyl{=Q5(`&B0{Kac){R2NT!fn)Si z>hh)1Vj!@=R;nE4i5G1b z$yl(8&+S6b;ES7Nj2lf8qcyOaY^>|wb!r<)C)Rm;Ve|PO3>6D0mymE%-b7|zRg0Mu zI(FOsYb|`+MRYCc9VVXq$^2ggPwkOHpsLwt^DQ-F1K(Nly#EY4_b=#+HX6u4)*Yh;`o<-<*XJY?8TsbrhlW|BD@Csv3b;Ki8&5~cJLLB1Bxg#`X#?l_Jat9`1b zcWM7j(q(@B^@j;qU2o~5TLe#<#J#lxXsi89ysjl(lv>V`;{gFI0G8ZC=S zr`um=>SdBw=uVSyyD=encc>h*Wg>C=;$jydj>q($@Mr+ND&OSzt>vxNNcb!9xD_7m zC+nk8S9#QQ51KrIikYmIi}0=Qs(_MFDT8)UIFp&X3lyr$#kgv>R{a)y{-6o2)W%@F zr7}Oz6B71pr*!dgif~L8>Kgp@rFQSDkS-NJdfNQyhu~)-u6H(y}*ugBsaSH1h8o}iS6@*$3bsYYbPfBl^n97Q+*Wq*7eCq=Vdv3eAsBFm;Y~zHHwseOrl0cuwUCckni4mMa zpX`>FypV_QjlWNv-J^TO6?T90r8?dI%P8#YiabMI*LNuZ8oDOON2UYt>_#kn)e}k9 z$+ka^XVIeKs3gBtV3iH-m;Bg*i|}M?Hwzt?Jzj8p(XnN)sNt&RIW$xf4kUc)4Ylv?Q{?SjVt(o+!zfA^uc>NYdBQe|QZX>bcKJtV8`DoAIOLcHAn`2|{ zH`yS&*<-BBh6x(^E(9jm&3|iJE=(yLQ>YOUp|N7|LQpKGV}9~k>7;WD^08X9_#cnL zRW5efN%mAfj2gpVmV-UacXNIsXqlk$I#=e5%LF_CA$FdN`t2Q{I>%;W^UQnH|GjtU zxY#4J=6l?x}x87G$f?X5!>_JnPvKV2**ey-(o!ddu{y+ag%s0 zoNt_W{mU(rxFP0463QFzBiE(%k!h!eD?fh900|;?CLvWx7q^o1jJ4?!si~>S?1I~? zW8upn5m1D~^oF|Cnw3x_ir&8sYw+uV{1yUsx<_;V=(AYzh{T%j>u4FaGM_c{TyV3% zr)+J7gL=3vQ@CC4`oR+(5~!8NhZbl0SS*Vcn8+W!XnntNeVi@tFPYu*?j@?CN;WC3 z-d~!i8CQL|5HAd&`PyD~ahCKj77$3&OywMmw=lazHbCjWF?@KEgDy(5)IElJUHjCA z<1a`NjBc1zk@CyW@jhsvwsxaF7^b410+)mc0b+p7n$Y4uufKev<1|P zQT*1@2WN&4yEA5{R;dF2#I@(D7A<;*rV-{l`!aRR8JCL)_3QWvzVnW}dW&12LMc`? zzDO(9q#0_-@Kt035L3+we;8Nq8m?BDxT{2}UK2sZaQFnRi7Vl9zLZ3P4c{`E3>bas zM=C+zKpsli;Ucw}61u+Ep#0Uj`2&pLobTUtZQjUlJ}5wK5IawWDsr4r7`u2ns=kB5 ze4Q+gh%khM_>f#0PNHpVT)Vy{nbh9MlRC8thFx1Vtx?6`;-)Cppr{<9RvY+W@ZeeD zBfp9>_39d0wkr+1@z=S9X@!V&4b$naOsBl~r6gp6JQzFx(8&P;V?X`U zv^P^6bMxh&YG{k)m_c`Wp&hUL^GNow!6rI z-#gb^S{=tegztE66`fIrgjg_q{bd=$YQy2w_6CL4E!-J`A9v*2ZzVh&iGhknW31H} zJLS~ILmh@E4Y%Q7!w&bH3=6N{Ib^YuowXN!kHoHSpyikKBPnu;o>ok-zd*jf84*-o(dg&BF@+P1xam)#ruAw;Wo|xQSH^9Cx+hSMy)b4y;E9$@93< zYCF@NVweL7rTNKe>l8kVq6n@qaKEt>o=p4Lv-5GwP6Xd2t_#;7cF2u2zQ+KYGP3jz z1nj4_p!yJR6|=seJ!|Ox4&D#ictu4S8%PS7ZbOdr-Z5US^)I|i?6AJrE?K%z@vizg zFp(YDT7b0s@$bD;P_qahv+YkmpQQtE$(4dwLuiS_!)_tC_hvuYFBa8Sp! zBg;G_K@IbSL%0abuRpV#x+@(&1CsId3YTrH23+`~6N#czjH*!2-tXgsW3d#eTDsY7 zVtr{~|IcV0bt?*uWETgq2-dwW($ceh0h2^0G26a1qmKOxVy~!=J$V<_@4~^-KBf@I z$7K|Yx-Z<{4WR;z#Y1TP0o7TgG4iz8^0W6HfioZ% z3nj(W7Qi|S(X5Eh0c;oYUd|*gbZ&2A&|H404J`>GNi`{XRlI=crv8>Q&qT}|i_toB zo0(-J7Jpg!4E&b}$;WceEYz)L4KZ4F8ukwr$v^N9h-47y%gyo6<^Slc&6J-;76l`1 zb+K@mdGTz{DECfYYKd8n*4`v$}6 zH}Tm2bNC;JW21TYkG%No#=MSmD<)0f<;aog2?O`3L<|rya$+Ph4gKDbZ#S!oov<@n z)tG?=A|B0sE>BX< zooflcr=~8Tiq2`l#G^(sXi%b=MP;vPEIFU*ocV&3%kB;RrjDxZ&_G)xO;C)Xx3K=T zXq}+ubV*z{q_DMW=tp(+)4;{KRJ+*%`lSj<$n6UrW#~&XftaST@!*MmlNv{r=%!o! z^{Hah&M5?qEVNu)1SF0kPk}Sdqr;U%fEYOiU$}>>J{cmkAw2j}^|GY6rRn;RXd+Ow z`_z4FM~wxM9HIQFz*YZG=yPfHHwsF1cR#<01KlH`FGDixtR(A;z1{Ux8;cH5&Ob_P zF}ju*`Ui-6yU(wm|J7RkH`W@7I>ww(Lpjrr#e=a{^~kzZq~uF{)$UJ()Y3E>eT zw&Reoi_=q%MT;3MoJx&n`Adm|E8#0cnJg~NVDbjdV1C+Wa$qG4t~>*!Gt0yp(j**@ zC1WTcoOn4eA3WcB4fs&mby_vKjZG}^!UF*_B+6U%4!qwhFN+WVsfI8gz6`Oo?6$H8 z2|PZdaXdV}$p}TR-Sd2GUmJLC=k8MiSgIZk`1>YKDbXj zyrU z|Li-K-|0b=-+~JLyQ}k(Q)yfy0q&mC?^1!9XNIWOq75bE8YrIe+>+nQs70u5FU3(}?$5 zT}U|Gf=hZ_M(x5z!dnaO_5FU6Sp7W_%lllW*h>D>#Yy;XZ=RD~sgbQ>)=+N;|KCr1 z1eu;3eOQz%??$&~B2G29e7~?Sn{Q5^z#gLmQ~Y*lOO_pD8p`Gu7RSdFmkXNO$ky6k za;Ha~C6h!Zf(9MjovQ{j(vC#TV6Llov@9AFx6jAaB`l5Ij}=ELc{j0YtJB!5LNwCn z>7q`L7sH!~B%S|kO+}VA8o&Gvvt8|D*AZvC77a0L{Bx1q^@yQW_M05%OJa-GvHh?b z@wi!OC{ttKy2-tV%zy)T42SJMknqMu#NvG#h_O>8VyMXnl&AKKADtRlTr4eQhnu`2HtUO-nCBi zQRPA6J}ylX6#2#foyE=h?NWXI-6g92X4$O7zVnWHGUj77_{pMwCAa(fWmocHi-_M`GA~T8bnGDnvuW+aDw4#jE(kSwR%QmtTa{@%KYHbYF4W;=7R{#7cN#EMn zrGwpfP2Fb{_E#OgpXt%B+OWn2$S6Kpc|$oCi`Y393qE~x7?!urmARBgishV%isV%V zHj1RwFQxeSVEiy=Ta;4gE+dy!Q?yDhWl5_}!k3((nsK|3dOl&6nx@Ep1}|h$Z^9Vd zu2gNAAn9lz=WyIyD2#rBpF+m89?!alw?}&gkXCs~TdIkwlOY&sy(_I5PYWL5Lv4q! z&xtN%U7gmaCVEc);`2zSB=h)QWg=f30(kI3o#z=h}*O zdaqC}!;aTmT+iKR)cT7~;lbzwpUu7tV#}{axpm?w7Qzk1s$ddDQ|aqUeQc&$emSm%iyi0DpV37O9{^zD`Uy`T84){^p(9x`D9V=81i-S4?cPriWDZ7RZzYeiIXrokt6 zoTqV zq#0G8emJjS|@n9H%tvbZF+@)rS1| zyCZD#FPUHu+?fDG z7UPNkCSf<2am-6(MK;`%ZTB_Fp!`_cluAzz>E-7^n?mQt^_y%Xno%pEPuLlR{C}jS zOx;IJ6wEtt8_gw8kmM=Bt-fij#)jzK z_~p-gDhxRlEP2~;vMA*}oKAvzQdJw7zNb7-XqwpCS#vg*3-mS_-?5knAaUaS1>{)lNq;P_?4l|i)u-9c%nZ(W?7f%L20-3EMkV0`&g!88pp>Zc zHP^t|)3-7otKMyWcR&76*3ZkXo=7-PBV@au{K5LIB86wuEoxFYQU77lbqc5M;rGa5 zP9`Up^fuw|X&KcHWzu{zU5edbU2Ya6Yg*UqLdH$TnH5BB>SLCW7#+D1i@*3Sy66}* ztYT_slNWEy^eM{`1#L!mZ$ptu|8e4cUb&C>a&cpB`NFwt9E`MN6N-%WSu&z>^(~@2 zidk(7gS7Y_S^E4<_$jOOC2Lgm%X;z#Dl#Ven!+hn-;eWmLCoX9W4$zZ6UnD-G#fWT zV5H~}Opk5}DL=_DDdoa0^VxCSopFnwbN>(}56I=@A;7%SP>{)RO~=HsBR9pv+uDLt z&V^qu@MK?rDrO4mkJ>P9ab;l8CTfJ)xj96Usw>)ty&gEI{MB~5Rwav|t)5CeV1Q=F z+CEyAYf3m(_gi1_OFE&ekj>zQ)}p1Ckydo5N3b+Vb97ZnSs<`aj@Xsi3M1gQe~+hE6tldUVjN0RcK%{OpJm_3(H}qKI{K!sHGRGKb&tP?b*a(Q)=X0JX63>>n(=zL=Az!@ zl5>mdVLcMywUE9)g;1dAM8tHI0FZOmg&=(onBX$9a!`Q>w@pAO>CqVyRv`X#TmPSv zvxBwn1u{u^`Zx~vsw?0p9Uwg%rEBI*gt<{9$gdv@`K4roTT~4V7X&dY2l1%PK#Qc2 zv>o{E7YjbjlGrn(Mbp`H?6|H6$dojUm(PbqdT>sq+H`qjkQVyO)EGApsL>>htGHFl z8!Uht`P{z@S(8N?{!~xqT(E85ehgH`m0+Y&*ig zAFnyysKb2%tMrdNlFb&JhHQi!lY5oxjul7wv zo-W0h^Ri3COgy@E7d!OdRaVd&{CzR`@3rYOjgi!P8AebOywO8pCVclQK)2>1?@s>w zGw=5xf@>w1A0$Ab{u?vW>eI8^Wv{C6;|K<}#8o5`)wKBwfv?DZ%SUzgmagi+YOnH; z{$y)_v)DaO9gP#m3XZ(~?Vy9CVFRNIQ%~{)UNX}1zL-|590eAwE9aZZ052+zW+RGD zT8s)KyV_avF%YATO_#Zka_q9R%D=E8;%c_SF=c&hj6q!qg16FuDLMG%FW~0JVE=x` za2Nd^xUcjhFmOiRsGMzZbfSI zK@c%A_QpLLdD9PZndDCIct9B+0KJ&alB@=_(?iN<2hl5WG9KidH~$35+J?+(q8PtR z=rpL&R8b(YtXKj5mawY@h=W<`wWmi=TymT+7Y3svAy6Y1Nr4>(6~0`>@l` zM~S!-tDKACsXZ>H|IkSC>C}@e??2(q7tzh9{;s@wD~qdKo^luLTJ&I)03iea<)r%$ z_kzX-s}5M(YHCS?=@KP| z0@j6c6~Xn5s<${I2NeJXcw0FViaJs7rdj#iLMFGS(I9(MrSD!qMsdi4$?n zZMa1~DCHLW>)V@1O-hDnF9zMCABfjvrT)3N7c-Qkk6I_MK*i_0+wyS$B}{JjWgE?k zLal3)6;<7+l~`}XI*2xoO@Ovdm%uWCpO)8*po&pVHEbyH?V-7kC1M$iuZ*S?4<59o zR~#{wQPabrMJE|EXg~MrlLSF>H$HiapO=|`W(W|ZWN^v=0hnc46!xIP_>9S?y5 zN+LdLviZ6lzWqM04HpsVfsH^UT5yY7o_>x4B6%K}poaYUEo2Lu^EfccWydtLe(kGG zqH@T2+cCcdRJc`1U=^#XG|_AB{!k>zIlSapQR|9DvFA?f9i{%BP4NTa_?A~Hi(c8+ z8+DJFb8#$8%Ic$5a&p3LH0_=+fgRZGT*!@{qK;1zB$mtG+^cg=r(99QOlqc>$6X_f zVTs-d^(YdIv~kdZ+w`~ra+A|95CF#V-f?xEW+IbFfB+Px2AL2Et`y@B{w9>(52m#}8yYcQexvbKV(5{ArJKxXtl(zsENCa?Q;$y7YS4f-Jz-;&$Mn;yGsbO`h5H?3!mTo5&p{x& znwKK>d{>c(GyyfQC9RVG?(z%rWI_W}ESaCQu>|mX2O$eGVUX7~gO7{&qZI{$wGcv! z#q#gno|#dDiS9muU|I>YjL&p>Zs*iFf4;$pTQLws4AE zb0(H84O4YRlT0yUWb60Kn;U^*2J4v_(juu$JMALocDr<{nM1Fb$3~{x2LY&KBb$km zS;J&bDMnp}bQm5;gTau6sDqX{wL^xD9S8+!7*V~2x$S?Jnf6qB+Wd)1UfY$Kn*>a5TRV>S3V|BQVgPnQRAT>5j<|6gW=lj z&OT)vvnQ%1)ykDZOc=q06}uiEo6p}?%4)}6zLC2}Q(P`CkUJ0}*a^Y($v1 zqUkypLJqL|yE-v4-FEr{7J}Ju$c;cnexH%bSRDEHtPnMi-YYftV#OkAzxN+8#b#b+ zJpqH2IN5Fdw573tk~pFqVq_L*CaPW5BbEv^BG;V_Ev#Zl8(#PJpcZVv3Uhpeq!uD{ z_lflcxV_Dpy}r%^Yn(^Q7(-%!cXxIp=LRcPYyjD`Y(EoM@znD~`O9L49BxW-hemF} zPhKGbqR9)&(5?z+mP#P^s3S`*satN8jk2CvWD+M2C&x>%b2`SZqf>v|CxpSOSg0@8 zQ?*?qlQL%rdvY;b@GT{DS$2&Qaup3bObeOw#~E8$MmIK^E(%Iu-~Pr^`VoM}@~(2z z^r|_0e?kk3%el3%1tPXg$Mz2>CkAuxCEpF@ht|Q6x;zAES=7=&{Nl=C-e=kAplzzp zIk+iby+j?pjh%x!^K5a+k85DKOa%wBUbvp)CxB?pf{1|GbKrmq_ z8W%C9NsqMu_hHS{W{&!Tdq)dYoQ@Jgd_j`P})UNd>NW@GW1&tnMWBq#36ScXrFCuBU_Q`-t*Qp>eS&1Yq8>bgtCnBO^5SQj- zn67sSNJAVIN6oD99T6M;qXwD;&Z`sNkmK^35rDn`@Q}%+f#>nmMH=!tr;At(XkSq zokY-Lq{Nc$q6-9V&M5s21F+)3P1PWz1{VKB{05qyuGW~d>0o~$nvJ{_`{lG{_D+pi zx>3Th+z=Rra7sY5#1&hsGoGfauS=jgDsCpLYnNg7yG_>so6GiKMv! zTBtp#K6>h@H`)bu=H8nI$yRwi`>j;n0oS_X|I#x4D*IKTELL4kuJ7w~u!sdM;m^cm z9na>!D1Dvjk`C8_e$9Y}v*7|2kw7}Q2t^>mg1U)%ztFEAQzb8x|FM5SF87v-;?%4&wvBu2+R5SwleXc&8rxi-Osqq`zw6Q7juaW@!cb4V?h4UW)zxR zo-P@iP&C-t>o&iONVr2ZOY!}1;g5gWIVe$aiqLf(T1CIB{?KV4)VN0nr7$701PYu< z8+oxLNH??@$F4Vn`vBukjQr(+ zqEfR-AEi(!+a*a|>YK(Dc}%+;;s?SmtcmhQ-74}(pxCbFRe;S*1eSLO1x>Ci^-cWU z=$s19b-McUn#h1GK4@eNGVt>^$ax>o2~&y(fZNQWD;|dvtUzFO;e8Kl*=JCr0wE@I zygZj;Z<%)R>dOE?w?-{c743Cv5+HsJGD>9lJ?(4i#zfq=zDl1yff~dB{z7s3Q3%v7;LxfCx2g63Sc6zA`vWf)&Ib# z`%x~Zw6aO9?=l_P*3~Ke+IC*p4x9|0mBW*yaQ&hFkOmmMZBs}^nb{977JYG zm?oAl;UYt&I%rdks;&r-sK${Z?NPc&D!cQMDPi^6go}H4U}$p{Jr!X-JzuNDN3yc~ zqip_1R^)Q^1V+|0ziMj0w>>n?ARIW#wGF%rMfc?VQ{IohG$gxRa+%J~x0Yu-%nZlOF%=2NX7r&z7ll5=(yW0{@v-5I}2L z?jNhDIcpd}U8PT5$CEkZ^bz})I$=lhk?meofwgy(%G*$iyh7wS)TF(QY|`C;2Yhw2 z70fCh1!>c6mRNS3$Z|`6u~hPv)6-FzP8b1=A`t`_j|)(igQpQK+HXX3^!j$Z_Y8bP zp%u1!k?X#{_^cF9MTqzdnNW5%a>t`rdys56DT!gtKrPP$3;`qek*&mVq4TDgnn%>_ ztQc|3DL@wQT#+c|sF;{TiFIW^0sbV1?acnP4R>Ggz@kRml*8{XZZVp|SY?ino5Nnz z%(^VJk$IT+Z0l1wOlnrLCb2`?f{qusdmbO;zse6aiFACg8s6ydFI(?Dh=KNHyh`-y z_Bn+m6`|Kqww{4URm-kltF6)f<1Ssj#-bM8w0PEY6kBUGYBJp8)^Le1wiNjvpue=R zMTeZWnSpqTgD}7wdKkUaUne>~ddZ7VWi0^l37yTbsjP!qYnDQeJP)RVw=`{$%%$S~ ztcG-x=6I^QP)5=NRvPnvtDz8J>{|H(1+b0@BNFo-5RIf@f8w0pBDjXF?ZU+LbWoPXV*nV3ub2CtG0rA{7*S&R zXXn;(rT=0mL-DWtY+?g4@7r_0*=M?$f2Scau!dTD@OBM3R&V2l`AyrE+u6Cj-{Ur( zcyr>+zuM6GlSgvDl1%b@w(qx8%fCWVm(-~v`@CmyKZ+o2qJNOm?fl?`dqR&~p3esE znZhq9;pU7T5P;Wm5Pa>@U9`uGcmt<=1OHu&hmgfa+?B(~PLLY%jFITgPS8@ww}?JN zu8*IBolM%vW~u=AT%vU?jF-ROi`phBzzs&mK`;(rY)888C@LreCODDlgG887Jz|L- z`0tS2OmgUbibz3ra+->QP;d4wJuDvFQ2_Xs28_Lon!tH4SSdXzuTs7wf~=e;*6DI@ zyDlb!Jmn!{vDWzs{;$c_aE$wf7|zfTejqse=|7Po`)&_Nd>&ZdXARyoTb81?f%0a! zUs}0Q!r3gg@~61@+20b3Q2{*q^RwoG`KTO_XY61-vqUVa;&EN(mL^3i%dTgQVlQ$V zT6YW3Na|j#g^-dfcn}cDRDh)T32R*Ey^So+$qHch2y$0ylb!t3B_N2;v4}^hcg+l- z6)R=~LiNCkdMJp_uT?JydC?o%B|om`1*{Z&t3M`BEVioK(;aWp!oBZ+0Uz^^%CDJYtu{k6uZ zVUs1POj|`oh7@vu6+>os2W1+Bk?UmOm(=~4Y^iL~wDu|Gn$hbK`e;OC^B6^dqjOpK zoHk2=Z&P??U#w<1^+$@ANu>X(N*lX03Eh+^%xf#Gww@MzeTkFT)5^M_08^!VM*Eef~GOB5F891L34T~2&?nCgxn ziwRS>RhiNHaqGv^^Y>+h(8b+7_m-`_dS=MFzulV#v?&Y_lzR;QH~l3o%Or^HEo0aB zdeNe%L6ZuL(8)W>Ij8Zc1rR~35pRB>|IXCB24H9lfUbCqrs-GQZ`N9@haN1~ZAJjs zb`UV+C8x*G)c;I94K}!yw&JV219u=+l(n z<8pKX01q?*^a(mJ3l31Zn~+#AHg}!*$Iz0TX+mi&{;yJhh$aWJ;wM^^{L=3MSVm*E z=YaP*|CJ;Fu%hBQtKAOI(N{mlewiiSoBthfLD)pY6_FT^woX(9u(Az7n=B_E{pf%j zjd5CfAW)dcFh$rK{2x8mcUjCDv-U_UyOd!E-p;@zWP@M9n0&>V=2Cw#7p7Z4EiJ19 z9Rp-HW7+>9+*P<_caq?-z1=Kg)*vlFESJ?b1|XLnHiw&15K*COT5C2BQZew$}%=Qm0v!1LbL>b)PGxHhE-oME0Xo={O z&$R`sPIl@k_`ibA&hEfTO3{dj2SBa+3t_1oR=9vDamQa{=hO2m&%Iz|Tx3@{;8H#k z9!8>t%d;kz_t~l2Flh-$XG@0^IG~K4lAgVc?D=~8N-@>=CD)x0;R{A=ldEOv8uf4! zY;oKcsxHaS6n#)BzIJCcSp2&ez9uH#=dv%PPJCS$^rxzNj#kaWxmfbQKSXw!YyA6+ zY$=g|4Bb)I6v6^!0i!4gK#og0tl7Vk5UL(_UsLDxT#&OX$w2(4I`@ZcjS0G@04lDU z)$i0D?OZ_>B59Ipjkz{Q%Ih~M$Q;E1)?c8OvMqs z`5FBV04r}d?KG#*I)RG zHeqmo%DXmJ3>(o*mbLz0F@R?)2qmAVmb~Oy0>(-Rg`>F(b%mj0T87Q9r4^?4D#l)d8a3lS;eInWL*=(hwp*0;XY? zcuWQkukP+q;ABO=gH%|9xl0n4pTZuuU^Nou)#1yz zbB!*76QU`jlHxB_->rkLnTgJzSD^)G5d*=#@B;qoz@glFa?*gjbs@WM1014&_t!mi zRZ9!SE^tNi?I2BGfh^N;pzMxi+G|Z7N(HN%mRRn{Azh7M>$t0WD5_+|XHp0PeKd;S z7<)>X*;3>-$o-oVTC%5zJ;h`o2jmThf+j4f3wpy}XaN?CS++1>Ub;mRfK>;c{~Ha~ zJ^S>};CY=);A@agmnORAlr~lc2yb@qozjr+7!1RzUN@o&P=-?7IZTLGR6c@^^ zQYSee+aVgRQp5?8tjax+k#)jwJ0Qipfvozn{|~!Ra(7)Lom;{);dK*dnY`gH`%|6( z|3+I0PJ_o5NLN4x9XBkx;}!mTq}5^x0m{q(*3_qKNXjx<1T_FF6(n0qp~R;JUmZ8^1aC2VWNj_OpLrfF&KQ6_LbZ!Dw>^vV2on01ie$e zGEC39Obh)XO|%N(cTcD;lm|TdItXbBYy=}jlkrvZcQKSDhPFtzYg5QJ${?(}B{5PC zTZoZJYMP|pcZ=l^KBFDle~VI}`r(((ahIv-k-V{Zfn9E#4Wzxeg0gr*WQlOyW^PlE z2U0+Uc{V5^abhr2NXo36ccEg!bAgr&yERd4B5L|~tSRA<6y(_Uoz36)0xgC-n6EO> zl)vrKJqdw8dPpk)V&xyYq=_eks+D_v_lFtsZ(N|1a_vl|481~LOT^$To9=F7O7}$u zEx!udV|ujW@(yMR;6tw1D>0kAZoG)U3`ykDww?@9`6;J}4K0=~$=9elK-1i7$Hbiv z`t5f`no*O3O0W}@h^~u~T)4V}GC?|6qc7kg=FpC#hZV=ou7xCB7o!EI!=olgeg&*A z>}RR|^0=v1VTj!D|9~tRNCP8ATBAZkMlJy}r$f1CGQArZzktdwWbgqw(ZP{dWYK~K z`^ZO*i6)$_(ZkFxZQ#ZH!~&u#snJ8>?OqmR zFXX^T0U@(AgMmhtr_?Zq+ac}rQXUKYh{I<5*+)^rSfpJLNH-eL92o)*#6?_(5+V8_ z6Kr6`65uxarI#1d2R^iF5Iw;DGpaP47#FT;ZWE5LibmEW;y+l(Q~y>6Bi>#6I$po> zLXEU9Mcz`INa(NP&bL5-?mU)eK0vccLR6emJmmtwmu`wR(Z-^SC`3|3-q0%ACm2Q| zWW`9)4cit>$?F~6e}i=ffK)ZBNb4fMqy`wr~$zC zIRX6gnF&_mwPTd-lDh-&IGzO{KdQmK@Ss-UfkY&h0#J`|0G6=5<+oBOU^{z&6&E#y z>G|pZ0xclY-#kF|ocd6JYNP>09Og zM*TkORR9T>jJ5 zSQVPWcn_3VsX@2xNCB$Tr9l89*PkX6kFgXWa%n#!iN_r67ZwiRsOsqS`?wbalrpGr zt;^|@8UY{`hEpG94xl9*K#>HXd;};*5rQ&?gP&+H1<1vBz$RPQK{n*)B^BG1#ue$^ zh$>WK;}M{E9w6FKT&mU+pgII-DFU>f1E_ml>R$vX^j`;vJeEi8_oxB|Bxy@yaBHiJfL}00oOsf!+g%D$p`*syqTf!rLa0Q4Ru7 zRDmukkg<4rm|lmi%RogVqyD{9fzF+4_M8$i*j> zV9o*rD4hccUu~@OOu3B$K*`0UO5zG-04gJ+AgVwblLA29YtB63Am68FDKuorh?XpP5U?MH%8tjM^+g+L-YBE)gjkY# z3e?1r1uBxLMXF3hfeIUuugoGiEP}&^W-F3Qy0GLTN?5KkZgUivaoz(jJ9x;a+Bgm; zGTU$AGSA}F3ft>(#X4+!srD}dBu!;x8+9#NA{Yi<@%{119|F;7E>KxNANC#I0JrX3 zL6F||*pBl)NZkOnL22FJ2B_!YJwrDXzIxpWm#>|H%{y1Z!jfp16=?^frVaqRso%il zV0p6Nol~E@p8^!Y0~C{Mj{rHbA<4Gj9;79WB(o*KH zi}*pWNnbxrV-~+nE}E(nlCHZqC{4XHI75}0yFlk%NS3-JI76A4ouLLRBPAUW2j@CQ2cOIVlSxOMp;^u(hk%ePwEYsm}m-0T&p^}Tnj+SJfYlk=h_@R2O2^_0x7m@JMjbb1$-Y56)d)$($X$TY_{N{5@V`X6}faQfi9@BvQ`S1p=8 zSM9NXtSQV+u!UK1BVlHgF?i0^1CJ0rm>Q@DuD;qZZicGFdZK*c$nigDsHpV&z3`5F zWlh0Fg{yq7<$&+?LFxQ_iGUPCA`b;(Q=B->xw@%^=)cG+5P5^wsA=mgx7taF7Rz z#DC!#s-o#0rZmkXRCU?(F#Xo)VMbRx=NR3c7GiLJYJlG5N&eagT)fq59H$Krv2p1? z)WY>IpVGH<+%2L2l{N=w7dHBw&#jw80eas=3k^l8Kr&t^xrS3IZt_uu_MF0U6(KNv zD0syV2J{dxH^m+nRm8xV^R4jwMTd0sf)2(bNaruNascsF*rSe{d{rfu8fDVkIdEh< zq~!R6Z{$dr8mt0tp+oR@koU?^B$ucom+FNe4D!AiK^esJDf0%J3sSz52+jUEfE>Vm zwtlCbtK1Gvi-BL_Q}SUy{!Mqu9QvHx{vUmF(@@2M>{byGsF}vgVNag^e>$=haW{0T5Tp^J#2p&uUD%je04kLfr#w z+&+9Vi{q0pki4w|_|Maah2?W#{r073cn?GSlLu6RNCQ#|5bXmkLj}6U51dKh?!6mu zsBI_Ityu&~3%tQCNDU^<9t3W42U3$9lBGt02+dZ(DpQ$4LxQ~V3h_E&0z3jh3uFPZ zkpdK&WDjnEy3g$<%571xQ2A8GyL`X_A${x04}^VQBzT3A-ltc3o_`b~&LGj-4-MS< zeQxL8@4L}HU-h?e?f0qd1&(C@=-pBU3P~tz^gT`iDl?`4#q$8kcBFfFp&DTyzRWI= zay4#@q=XE!aTm2BisYTpAIAHC1O73lu&^{7S`KZ5r_b8y#=vuzj?gNM%mWdC9z4EI zFW2%IAzQbl1`;y8V9G2luyg+!+{4ivrzk;a7U}1x(RD2$NPlMz1*Kbch=C3hQkVcx z7J8uE5fDWIa-b$UIB_(ldEF;A69=pvXfg1QvH%Is8Bro`S4>ZJq3`^NR^WfZ^ZZ>; zB;)*h93)+F??T)?mm;e`C98sc7O$MSGp}w60Z2k-TS!_GAQE9JOZpjzgv-dtZY3h? zXtMK2amA{1b06_YUi13HguuUolUIL;M=%by?!ed#6=WhY;uF}_S`DWz?1!zpRzpDK zSQt6s&tUKQS5zE%2u>#+hFc6JUa)kiPo;pFBWTdZi}tgP&_?ajzWC>=o1oY2?&+m1ZrSB2FkV zW#X2oQ5B&b>0eMHF1U+12msNj;DQ5*+m}XwB&m(;j-9hW31+1ZgDIhyh9c4Q$Js!L z$Q**R2Z3m@BLv0U!X#fEaP%6$nPU;@pmQmR?kFwbrwbQxGtOMde7!)e2UxNY5d$5P zNdPj1s2p2}%yNLp3>UF?xH;?Ur?JD<^?Psng5$O#{~v{jSEKjx_Aj;sNaU7#f0b44 z8Io2u`Ru&KmTc4_4TdxoV~aT@5kTqz5f74Rsaj8fD&JS5ZjfkNDOcjGvPXq=E3qK%F_PCP^C6Md=L<_qv7IXW) zWFZn1i2z7FQl;mCxD#xU-|dL0w|R0{1U(|vLu{NGlgf5t;0X!A>^ zjT9}OToRjS*EKgsON>uEgC~_G6OCj95|YIKQ3ZvXz{oF`(G^9px;lvhg=7mUPyC+I)bBy z>h}M&cjmEeUD+LWGg;cC$t1CCYv1>Mr#5a9MeQ3UN+Kz0BdLudMTv_fQVU5@q$G=y zMJ<+O*>N0al6VI2v>6l~AV5&Wbvx}plXOMX0!0TiE;?J|WEv;pd#C3%qv?R@{> zOfjvV&ZYV+=|Aq8NS^4NNRN<8)1Evr#qVFa+?z~I(F+ai4Lo6Al?6>KiH5a~f*V8g z8UHdcmqZOalIT%)25nf*XQsf`O##@p`6w>4sU;ae>oyt80#rUD+r=Z{z}xl$n%TP# z!OSiJq2LGv4*rY-vwKDO^J08mjPFs5_a*qVQdAkt?GtfPJbaDX<>BvnVB6v2vv~** z52k!vu#i$!Zz)Wyl%U5chEW%X9&r{@!}daIXr4n4%;ZsOYt~Qur!sH#Thf-4hV&Ha zI8*q=hOYnb4DNUp)$Nm>8FQ6Mwf6iy&1~8~sBDQJXy%eX9VRt4o+4%ycV@F1X19o{ zU}jr{APJA4;(>JwA=@Hgl`tR>AdW=#Pm>& zE);-qsRFFtMzC+T!@@-wI4`z?W2Xh?cN!S5Y?~s4s2nB0!6jaTe*{=SGZ%$0d$Al< zfgp%rem?+*eZLx2gRsi`=QY8MuL-Od z8ewX!0VY@L$t(-Z=c{3SNeKGIQVe5-cSoFge~+KtX;>-ACe;k=l>JN1iI{by$L)6M zlbhFOV)XM>-%^?pvw zBLl~FC)l^z!M@!J^V=;%w0%cHIW9{4j@?#@$cb9mZ$q_Hu1g)%;z1|9cpwM&fdbr@ zyHHB-T<(FTE4`>bMxHDE0bM5Q#lP(a*S;JayKOML-AGSe5YvVw9>P=nJ;PG*`LPvF z>$oR3zSl1J{lKEC{juY3-C6q*a-!po%D`71dqKv9rtAI2qK|5o!BF25LN}|!K{^rx zUE@iBIR$7P95A@KI7Kdp>2(Y%8}%@Uo?(7lf}TmrcqrFyCrSnjyE59fr=Z=Jx=`J; z=b(pPzS2vtywp#xTvgHMUsluJYXh+U>QF%67=jDm7)FuT1F&{o1FNs7VEJk{EFQ?f zzT1i+wIQ(Ms-qN!W=m=HWErK@mx4l{Ijx?`7L2bIhYi^Co+j`xi>kopJYOw8p=5VcXdj6K`B)P4n9~rbY`~lYbPHt& zl>oz?2*XM(Ok;SN*=YX6zSZ_K$4sjD6o&#Y^2vl~2Ay|>n*dGNgniyysibqeC0o|qyT5Zeu@tC{#uZ*i@Z<*J4 ze`)awzdyNF@psd{%D*MDZC3q_%~$>Yq_^r9dRG~(b(Ek-;UJWG&|}JiE<*;$MpL0} zFbNv_VxdM61>%kfC~pk~ep4`%)*;-I1gcS9NK3l7P*xjRPmcB^-xHE@3wC550YKk* zZ|4QfTV9@6;@#~sMnT7DI4v0rg{J;cgee57WFa7G3qg2-nL*?>gy6u1LTOD16jud9 zq39fNYhs{C6zVS&p8IxAVOSP<-@JiSPozmtJxQ+8qpR<_{W-lwB2;Mj@8t=f_2=;a zkj@o6OXmrngTl%eptw2+fjtY{`d|<=he5d{0-qfLmC{J4Y)6pVLg_k1GTqu+NVWBp zeZr{<6Xpq?4PqAwA0a^RzWd#07WXB)mNouQR5P*AZH}Vl41 zT>dUc{DQx*@_CvgevvM&IgMbRVE`3MLh%{lAa0L@s*WgpZWL5^l4~T0q@i^EF+ja# z_ll~61uQ_1*xrBt{ii%vS~sme!M_hV<3T+eL-$Qb6Oce|h{R+%5}GxU2vP*pDI=KT zb`n-Z(ue>^O`#xajRSr|gukRF{AMmUCiCd6KTBkf>uhe{zWoQ2_8wlpuHxO2niu`W z)i2T*B54ATum$t4worsLoPniA9tE|E=+6`gXQ6b1G6h=u7=S(|0FkZcSb!ewtn7*9 zt8E*zJHj80x)We%A&wrf#{%(2y;Ctj4r}Wii-xw5XlPMKK|>E2+{h!35RLp?&Ifo2AQY?BTa_$5fPz)=w2qxTAcf><^OQfG)|8RhgyG`DH`|Zc|v(mgieZ^lO zG>6=V(-g1q3?*zi%XD8<%P~RkieTQmsXrEhjl)De?&umz>WJtzO&W9#6;T~(?!B^l z7N8RW(E95gzJ<%8I}_{4Fz!vF$5xU+x0DE4cOncgkQM3#rvACx9FGviL%TK(Bsc?W z=m|hnBTIk^NtB=86n>NJ#r&%P!s}zYsm7fCvGQ9&$(cibQxJiN5=n#6yM#e~PsIJ% z-7tAh!jbTPBpxJ#k#xsMIw-Wolx%><0(4>kdZWYVdP#K0M0WaEOQI1XAl^v7oCu?y zBp6vpWD4E;Z3#>zp?o}nfv81|o(QM(b&3QGV^RL{rid>DkZMBsPDR_bmg_R0TVF!S2U&nl3_zQ2$b9ar z;yYxoA>(>7O^W5my~z*=X`~N}wAUnKNJ|2hEeZ3YM39ZeqnC)qP!kP}-HA}u9_`0z z_x}pejT<+^6t$nFs${`beNQMkQIJ{v?$pI0Gzm=gVz((7dd$hp zRcTCwPJIlm9M6Kj@lvX5h<8s=AI<`FA^`fP%;&i#zQb%-wUJC(r9V_bM90gn|ZkA@NZI^!V0InS1#a@jp-P zkbbOW%Dj<6KM2r-H_#1gSV_ZBmIh>76w3pD?`V;Teb;Yk`W}bWI;Q$2+y{0^^v6IV^^Zwy~ z&GVyhJ?Qpt1giE{uC|Hi_xM*VzHGnQmr6FWqD&j9G)bb#IUL73V2rPl9;{4eV70C+ zdT>6I>bIsJc8n&{E$X!>YNIS`B_qbw+<%<#W-#ZYlOwLp7jkIRdKNw5CCWzS(&WUN@s%Q4?=GT892`n* z%|C1(P5hB$D8|{?A2=oPp|!|Im4c*6=QBX>3_m0}&kot?0;bNlz_hmw?)4=8%Bj9^|2)x%-l>4&$uGLrb*M_As?Wi*^L#K;> z>cMp;)=q{oQ{ldexCpf+rE+LCcXVXFXhY}Z{n41K;?Kt2;@d_~%{#`W`ahX)SMTaw z6_%m7vKF-^H|5uPo`*wZe{5hc?`h1fBFrnf+?maConx9eKDhUYk1t&?le zx%hg$i`S#I7w}ZJoTy*w`uvRs^f>>5qugk~9vWm`&(5}Pl~&H}i&|Y*>N_0!H8r-~ z%6yBD6aJaUVc|L1_8T_i{oYak)&FTgA8arBLZ6N8x?qhp)>vbWHP%>TjWyO-V~sV| hSYwSf)_#}mzX1?*L1=s(Zeaib002ovPDHLkV1l*eI%og@ literal 0 HcmV?d00001 diff --git a/bonus/android test/android-basic/first-demo/res/layout/activity_main.xml b/bonus/android test/android-basic/first-demo/res/layout/activity_main.xml new file mode 100644 index 0000000..8fa8d90 --- /dev/null +++ b/bonus/android test/android-basic/first-demo/res/layout/activity_main.xml @@ -0,0 +1,22 @@ + + + + + + + +

{{latest}}

+ + +

History

+ + + + + + + + + + + +
TimeExpressionResult
+ {{result.timestamp | date:'mediumTime'}} + + {{result.first}} + {{result.operator}} + {{result.second}} + {{result.value}}
+ + + \ No newline at end of file diff --git a/bonus/bdd/cucumber/cucumber-turtorial/protractor/demo/webwxgetmsgimg.jpeg b/bonus/bdd/cucumber/cucumber-turtorial/protractor/demo/webwxgetmsgimg.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..20ed6dd4bd75ee2b3394ba37031032251da5ebd4 GIT binary patch literal 44340 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 Jz@ZOA{|5fI19t!b literal 0 HcmV?d00001 diff --git a/bonus/bdd/cucumber/cucumber-turtorial/protractor/webdriver/cancel-promise.js b/bonus/bdd/cucumber/cucumber-turtorial/protractor/webdriver/cancel-promise.js new file mode 100644 index 0000000..a9b2845 --- /dev/null +++ b/bonus/bdd/cucumber/cucumber-turtorial/protractor/webdriver/cancel-promise.js @@ -0,0 +1,21 @@ +var webdriver = require('/usr/local/lib/node_modules/selenium-webdriver'); + +function logForever() { + var key = setInterval(function() { + console.log('hello'); + }, 100); + + return webdriver.promise.defer(function() { + console.log('goodbye'); + clearInterval(key); + }).promise; +} + +var promise = logForever(); + +setTimeout(function() { + promise.cancel(); + + // Swallow the resulting cancellation error. + promise.then(null, function() {}); +}, 300); diff --git a/bonus/bdd/cucumber/cucumber-turtorial/protractor/webdriver/defer.js b/bonus/bdd/cucumber/cucumber-turtorial/protractor/webdriver/defer.js new file mode 100644 index 0000000..7e9afea --- /dev/null +++ b/bonus/bdd/cucumber/cucumber-turtorial/protractor/webdriver/defer.js @@ -0,0 +1,19 @@ +var webdriver = require('/usr/local/lib/node_modules/selenium-webdriver'); + + +function timeout(ms) { + var d = webdriver.promise.defer(); + var start = Date.now(); + setTimeout(function() { + d.fulfill(Date.now() - start); + }, ms); + return d.promise; +} + +function printElapsed(ms) { + console.log('time: ' + ms + ' ms'); +} + +timeout(750).then(printElapsed); +timeout(500).then(printElapsed); + diff --git a/bonus/bdd/cucumber/cucumber-turtorial/research/Shipping.feature b/bonus/bdd/cucumber/cucumber-turtorial/research/Shipping.feature new file mode 100644 index 0000000..ee8e72b --- /dev/null +++ b/bonus/bdd/cucumber/cucumber-turtorial/research/Shipping.feature @@ -0,0 +1,44 @@ +Feature: Shipping + + Scenario: create new shipping address + Given user has less than 5 saved address + When user chooses "new shipping address" button + Then validate required fields in shipping address + And validate field format in shipping address + + Scenario: validate required fileds in shipping address + When user input shipping address with following value + | name | mobile | address | + | shiyimin | 18621519910 | | + And user clicks "Save" button + Then system does following required field validation + | address | + | address is required | + + Scenario: validate field format in shipping address + When user input shipping address with following value + | mobile | phone | + | 18621519910 | abcd | + And user clicks "Save" button + Then system does following required field validation + | phone | + | abcd is not valid phone value | + + Scenario: Modify a shipping address + Given user has more than 1 saved address + When user chooses first address + Then validate required fields in shipping address + And validate field format in shipping address + + Scenario: Delete a shipping address + Given user has more than 1 saved address + When user chooses first address + And clicks "delete" button + Then a confirm dialog is popped + When user chooses "No" button + Then the dialog is disappeared + When user chooses first address + And clicks "delete" button + Then a confirm dialog is popped + When user chooses "Yes" button + Then the address is deleted \ No newline at end of file diff --git a/bonus/bdd/cucumber/cucumber-turtorial/research/m-commerce.feature b/bonus/bdd/cucumber/cucumber-turtorial/research/m-commerce.feature new file mode 100644 index 0000000..ed42cff --- /dev/null +++ b/bonus/bdd/cucumber/cucumber-turtorial/research/m-commerce.feature @@ -0,0 +1,17 @@ +Feature: m-commerce + + Scenario: Shipping + + Scenario: Shopping + + Scenario: Expo + + Scenario: Navigation + + Scenario: Payment + + Scenario: User Management + + Scenario: User Profile + + Scenario: Order \ No newline at end of file diff --git a/bonus/bdd/cucumber/cucumber-turtorial/research/mcommerceDef.js b/bonus/bdd/cucumber/cucumber-turtorial/research/mcommerceDef.js new file mode 100644 index 0000000..e63c52e --- /dev/null +++ b/bonus/bdd/cucumber/cucumber-turtorial/research/mcommerceDef.js @@ -0,0 +1,148 @@ +var util = require('util'); + +var mCommerceTest = function() { + /* + this.registerHandler("BeforeFeature", function(event, callback) { + // console.log(util.inspect(event)); + console.log("digraph " + event.getName() + " {\n"); + callback(); + }); + */ + + var stepStack = []; + + this.Before(function(scenario, callback) { + stepStack.push(scenario.getName()); + callback(); + }); + + this.After(function(callback) { + stepStack.pop(); + callback(); + }); + + /* + this.registerHandler("BeforeStep", function(step, callback) { + callback(); + }); + */ + + this.registerHandler("AfterStep", function(step, callback) { + stepStack.pop(); + callback(); + }); + + this.Given(/^user has less than (\d+) saved address$/, function ( + arg1, callback) { + var given = "user has less than x saved address"; + + console.log('"' + stepStack[stepStack.length - 1] + '" -> "' + given + '"";\n'); + console.log('"' + given + '"" -> '); + + stepStack.push(given); + callback(); + }); + + this.When(/^user chooses "([^"]*)" button$/, function (arg1, callback) { + var when = "user chooses " + arg1 + " button"; + stepStack.push(when); + console.log('"' + when + '"";\n'); + console.log('"' + when + '"" -> '); + callback(); + }); + + this.Then(/^validate required fields in shipping address$/, function (callback) { + var then = "validate required fields in shipping address"; + stepStack.push(then); + console.log('"' + then + '\n'); + console.log('"' + then + '" -> '); + callback(); + }); + + this.Then(/^validate field format in shipping address$/, function (callback) { + var then = "validate field format in shipping address"; + stepStack.push(then); + console.log('"' + then + '";\n'); + console.log('"' + then + '" -> '); + + callback(); + }); + + this.When(/^user input shipping address with following value$/, function (table, callback) { + var when = "user input shipping address with following value"; + stepStack.push(when); + console.log('"' + when + '";\n'); + console.log('"' + when + '" -> '); + + callback(); + }); + + this.When(/^user clicks "([^"]*)" button$/, function (arg1, callback) { + var when = "user clicks " + arg1 + " button"; + stepStack.push(when); + console.log('"' + when + '";\n'); + console.log('"' + when + '" -> '); + + callback(); + }); + + this.Then(/^system does following required field validation$/, function (table, callback) { + var then = "system does following required field validation"; + stepStack.push(then); + console.log('"' + then + '";\n'); + console.log('"' + then + '" -> '); + + callback(); + }); + + this.Given(/^user has more than (\d+) saved address$/, function (arg1, callback) { + var given = "user has more than " + arg1 + " saved address"; + + console.log('"' + stepStack[stepStack.length - 1] + '" -> "' + given + '"";\n'); + console.log('"' + given + '"" -> '); + + stepStack.push(given); + + callback(); + }); + + this.When(/^user chooses first address$/, function (callback) { + var when = "user chooses first address"; + stepStack.push(when); + console.log('"' + when + '";\n'); + console.log('"' + when + '" -> '); + + callback(); + }); + + this.When(/^clicks "([^"]*)" button$/, function (arg1, callback) { + var when = "clicks " + arg1 + " button"; + stepStack.push(when); + console.log('"' + when + '";\n'); + console.log('"' + when + '" -> '); + + callback(); + }); + + this.Then(/^a confirm dialog is popped$/, function (callback) { + var then = "a confirm dialog is popped"; + console.log('"' + then + '";\n'); + + callback(); + }); + + this.Then(/^the dialog is disappeared$/, function (callback) { + var then = "the dialog is disappeared"; + console.log('"' + then + '";\n'); + + callback(); + }); + + this.Then(/^the address is deleted$/, function (callback) { + var then = "the address is deleted"; + console.log('"' + then + '";\n'); + callback(); + }); +}; + +module.exports = mCommerceTest; diff --git a/bonus/bdd/cucumber/demo/.DS_Store b/bonus/bdd/cucumber/demo/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..788e52f18c73ee62d757adcd930b4cd34f73a57b GIT binary patch literal 6148 zcmeHK-D(p-6h6~NyG;>Rv?zG9w?YaDRYLF9G+qjUl@_s*?q-)}V6zkUr$Is>*L?$T z{eJ)-Kt#b?FMWqTfR~;#Gm(VEg(8U9Im?;v?94ecd%nrcWB`D*im(A-1Av7}SgB&M zLa3c|N!D}?#WC5(00M|0g&pWGd7BEufMMWYV}RD~HuRv7I=_B>NFam^*Rnus2V(Fc zh))_`PYi}Cjg9k*MGr)~9Ts^H;M@7v7qX8Fj6D$HA4CuP^Iz`L;MZ2oVwOQSw$G%>D=JmzM%l*8_T7LRezVR>$wB7OZ{>*+X zMEuM4g99Foy7tX|k>oy4qI53w=#VF&7_~%^gxQg&`a9%d-tXGmoisYd(2k!(2R!2e zk9q#w+N7sz-x`m1_i9dKuRf_c<7Ts7bMEanClmXlW!<@Z|G}dt!^zppSFhi^efR#; zXQBW%Zrr)0+|W3KFKCo7wD?P?ekk`|G4myTubAl)@5PxtrtdHDKK0Th7Rd>E%`&Hm z%P2a3YwI#5Z*n#a7zRoip#8x?C3H1T70Rsx3wZ@VtYEbiwCOHEF^)!8<5VHGpfDAR zs6v^(VlWks^^W#)HBJ?(aA5lK!Su*X-%yww9s75rJ1|$FDGdXLfkg(^)vHbC|HI$k z{}+SIn_<8(@Lw^&Ds8Xb!j$ycx|AH9wGQerDhc^b70M7S^l>Z=I*M" + Then should match + + Examples: + | value | + | yimin_shi@hotmail.com | + | 1109520332@qq.com | + + Scenario Outline: Match a non-floating number + When I type "" + Then should match + + Examples: + | value | + | yimin_shi@@hotmail.com | + | 1109520332@qq.com.com.com | + diff --git a/bonus/bdd/cucumber/demo/cucumber-hands-on-lab/matchemailaddress.feature~ b/bonus/bdd/cucumber/demo/cucumber-hands-on-lab/matchemailaddress.feature~ new file mode 100644 index 0000000..72cd837 --- /dev/null +++ b/bonus/bdd/cucumber/demo/cucumber-hands-on-lab/matchemailaddress.feature~ @@ -0,0 +1,19 @@ +Feature: Match an email address + + Scenario Outline: Match an email address + When I type "" + Then should match + + Examples: + | yimin_shi@hotmail.com | + | 1109520332@qq.com | + + Scenario Outline: Match a non-floating number + When I type "" + Then should match + + Examples: + | value | + | yimin_shi@@hotmail.com | + | 1109520332@qq.com.com.com | + diff --git a/bonus/bdd/cucumber/demo/cucumber-unit/matchfloatingnumber-stepdefs.js b/bonus/bdd/cucumber/demo/cucumber-unit/matchfloatingnumber-stepdefs.js new file mode 100644 index 0000000..4716f76 --- /dev/null +++ b/bonus/bdd/cucumber/demo/cucumber-unit/matchfloatingnumber-stepdefs.js @@ -0,0 +1,22 @@ +var test = function() { + var self = this; + var product = require("./product-code.js"); + + this.When(/^I type "([^"]*)"$/, function (input, callback) { + self.input = input + callback(); + }); + + this.Then(/^should match$/, function (callback) { + if ( product(self.input) ) { + console.log("SUCCESS"); + } else { + callback.fail(self.input + " is not a floating number"); + // console.log("FAIL"); + } + callback(); + }); +} + +// This is the javascript step definition library for cucumber features. +module.exports = test; diff --git a/bonus/bdd/cucumber/demo/cucumber-unit/matchfloatingnumber-stepdefs.js~ b/bonus/bdd/cucumber/demo/cucumber-unit/matchfloatingnumber-stepdefs.js~ new file mode 100644 index 0000000..5137bde --- /dev/null +++ b/bonus/bdd/cucumber/demo/cucumber-unit/matchfloatingnumber-stepdefs.js~ @@ -0,0 +1,21 @@ +var test = function() { + var self = this; + + this.When(/^I type "([^"]*)"$/, function (input, callback) { + self.input = input + callback(); + }); + + this.Then(/^should match$/, function (callback) { + var reg = /(\+|\-)?[0-9]+(\.[0-9]*)?/; + if ( reg.test(self.input) ) { + console.log("SUCCESS"); + } else { + callback.fail(self.input + " is not a floating number"); + } + callback(); + }); +} + +// This is the javascript step definition library for cucumber features. +module.exports = test; diff --git a/bonus/bdd/cucumber/demo/cucumber-unit/matchfloatingnumber.feature b/bonus/bdd/cucumber/demo/cucumber-unit/matchfloatingnumber.feature new file mode 100644 index 0000000..fa117f5 --- /dev/null +++ b/bonus/bdd/cucumber/demo/cucumber-unit/matchfloatingnumber.feature @@ -0,0 +1,32 @@ +Feature: Match a floating number + + Scenario: Match a normal number + When I type "123.456" + Then should match + + Scenario Outline: Match a floating number + When I type "" + Then should match + + Examples: + | value | + | .456 | + | +123.456 | + | +.456 | + | 123 | + | -123.456 | + | -.456 | + | 0.456 | + + Scenario Outline: Match a non-floating number + When I type "" + Then should match + + Examples: + | value | + | 123. | + | ++123.456 | + | 123.456.789 | + | + | + | - | + diff --git a/bonus/bdd/cucumber/demo/cucumber-unit/matchfloatingnumber.feature~ b/bonus/bdd/cucumber/demo/cucumber-unit/matchfloatingnumber.feature~ new file mode 100644 index 0000000..052e526 --- /dev/null +++ b/bonus/bdd/cucumber/demo/cucumber-unit/matchfloatingnumber.feature~ @@ -0,0 +1,34 @@ +Feature: Match a floating number + + Scenario: Match a normal number + When I type "123.456" + Then should match + + Scenario Outline: Match a floating number + When I type "" + Then should match + + Examples: + | value | + | .456 | + | +123.456 | + | +.456 | + | 123 | + | -123.456 | + | -.456 | + | 0.456 | + + Scenario Outline: Match a floating number + When I type "" + Then should match + + Examples: + | value | + | .456 | + | +123.456 | + | +.456 | + | 123 | + | -123.456 | + | -.456 | + | 0.456 | + diff --git a/bonus/bdd/cucumber/demo/cucumber-unit/product-code.js b/bonus/bdd/cucumber/demo/cucumber-unit/product-code.js new file mode 100644 index 0000000..1269a35 --- /dev/null +++ b/bonus/bdd/cucumber/demo/cucumber-unit/product-code.js @@ -0,0 +1,6 @@ +var product = function(input) { + var reg = /(\+|\-)?[0-9]+(\.[0-9]*)?/; + return reg.test(input); +} + +module.exports = product; diff --git a/bonus/bdd/cucumber/demo/cucumber-unit/product-code.js~ b/bonus/bdd/cucumber/demo/cucumber-unit/product-code.js~ new file mode 100644 index 0000000..e72b81a --- /dev/null +++ b/bonus/bdd/cucumber/demo/cucumber-unit/product-code.js~ @@ -0,0 +1,6 @@ +var product = function(input) { + var reg = /(\+|\-)?[0-9]+(\.[0-9]*)?/; + return reg.test(self.input); +} + +module.exports = product; diff --git a/bonus/bdd/cucumber/syntax/.DS_Store b/bonus/bdd/cucumber/syntax/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..37d302c19da522604a1f18a1a0fdb450d249370f GIT binary patch literal 10244 zcmeHMPj3@P6n~o-a6*ubD54UVMdCoERM-Rv+)Nsf5ULbm3Mx>NwbzPQUGG}%R z`ow{L0ge^_$~R~)NQgf@_0p<`_6u<7v4_%A_`R7SnX$7DiG&oS8EfW^ciwyR-tX<3 z@r;ScnQQw6BA1A=s7!NHXf`N3&UL7asV8|*2l7PA)TEf&6p=r~Z68z@E(|yH`@%S_CWt7J)SccztkDnHCl8ODdKQG~x&Vn!#gH(8oDI$he9Y741tZ zM4?lj9vmg=s3V3W#WC(OJ7`hSzNAu|94StYn%Pk&6i3VsIajcgQ3#i9dML{n`CR{F*DsjCbI4JW~8ecu0pZD8Ih3NO* zk)wipLmTR`|6Y8Jnm#YPL{q}276tI@b85lAIyESy>VRLrfmin{RnGKn{NGV?X#Pdl z|6_B~?a_SPl-KmL$a=@&Ur2%Jm2(**x>t&;+-WsbOy86nVbDtQ`M;g9@yxE>d$JRg zd-;>wKlx3m7I#XCm$X}RUh{_d7Wmb&>MwXn?Op#$9EWRtuY5JAb{2D=d=W>97ev*j zCVKN)5czRuE^bGD>t;#nyB7FKZ83Lnp;=vl=z`~vwcd!%8wO${d2OKig~ zssXncYgo(7g|S;0)e+M;O*AH7n|d@)dw-UA5`7lUiw#Ci3&q=zMSQCw<{aq?)l56Z z3VRQ8IIF8-t|5Lcd;kA3e#H)A!8GiD~!L={(Z+?r{3P;PgaEP2XQJ zI0TFt#>4wI;?aWnqbGKVVLe(%Q+dq53Pt-6)C8ezAayyk%Shk4NaBo& zlBQ34Za{Jbx8_~%z*F#U!o9w&Zq99byui9M@YjQ%1F7clwxj#E#%FpnaYEOj+y3)E ztbSd;7LnfIm}%D%%S}-SOF$D#r$1`b7mKKFXR4fOcjkvtb7+1Go)TZOUu< zSrm$GV-c_jSOhEr7J=;}FfK)1zW+a;{{R2>C$N$h0gJ$nN5ILq{!c!6U>$g*d3Z&HrG32B@0? W^XI)i|9^f_p`8Zz)7~%&3cC3sBbhAu&C)O6dGng zdeZ!4J+P!9BHkXG4bh5-7HEPjg9#D!r0K?-?|__h49!rt&wbxw`aeXz{gw{&LIe8Z z`$y_m?CZR(k-B}`?CQST>sHsFWv;HTs^)m8iM~D_PuXV_+x5*a*8Tf9^Sv(My))np zI0MdrGjIt8?2=wAFOkf1I0MeWRWTsvLqHRZhDk9W9q4ii0Gvae1!JitBqkU}!=wlc zgf$eXp=>1vYdG}5{Gwq})No=eKG;@17cZPwNB)rAiKC+T&VVyeGBDHWO78y${4$e8 zei`C3XTTY_G6r~F?W!#{Wq0e3?a5sm(4Npl#4pJJf^qQ(z(mfGbvCL!$QXXnFeyqF S(dTfWKLj!%-Z=w*z`!@}$TNxn literal 0 HcmV?d00001 diff --git a/bonus/bdd/cucumber/syntax/cli/Makefile b/bonus/bdd/cucumber/syntax/cli/Makefile new file mode 100644 index 0000000..093cbee --- /dev/null +++ b/bonus/bdd/cucumber/syntax/cli/Makefile @@ -0,0 +1,5 @@ +cucumber: + cucumber.js tests/features + +.PHONY: cucumber + diff --git a/bonus/bdd/cucumber/syntax/cli/README b/bonus/bdd/cucumber/syntax/cli/README new file mode 100644 index 0000000..7a783b9 --- /dev/null +++ b/bonus/bdd/cucumber/syntax/cli/README @@ -0,0 +1,3 @@ +# 运行单个feature文件 +cucumber.js tests/features/product-list.feature + diff --git a/bonus/bdd/cucumber/syntax/cli/tests/.DS_Store b/bonus/bdd/cucumber/syntax/cli/tests/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..1d7548cc91291f72d0baf3db9abda0a208a7051b GIT binary patch literal 6148 zcmeHKOHRWu5S@VvMPkz>OJAWku&S_O+Y0~*g+-!NZL=o#>LtpJc=G|ZN)W6NLNk*6 z#`AIPSJh(^5ik3CK{O|#0!@%bnGi8gx-LBU3dlM~Pg{DTUA?QCiHZKAN!DJ_8moSw zJ)NxovFjRaYV2HNcV9Z2=f$e(+Kq4ZFf~Ejm1W)UE26j8yQ4;qR?v3!w=tWS({ITy z7!nKw1HnKr5Dff)0V!{g;@U9!U?3O>20j^(^C6)LX2-!$j}CPD1OU!pR)MZJQD71S zFgp&0ut3;SftJet#9&K@J$YPq91Ja;*dHJ4U;cQ!u-}6@X*h82Lq6-Fofq{3%1Ukb2 literal 0 HcmV?d00001 diff --git a/bonus/bdd/cucumber/syntax/cli/tests/features/product-list.feature b/bonus/bdd/cucumber/syntax/cli/tests/features/product-list.feature new file mode 100644 index 0000000..a3eeab4 --- /dev/null +++ b/bonus/bdd/cucumber/syntax/cli/tests/features/product-list.feature @@ -0,0 +1,6 @@ +Feature: Product List + + Scenario: Search an existing product in list + Given sort by drop-down value is Newest + When I type google in search text box + Then the first product is Nexus S diff --git a/bonus/bdd/cucumber/syntax/course-scenario-outline/Makefile b/bonus/bdd/cucumber/syntax/course-scenario-outline/Makefile new file mode 100644 index 0000000..72e81c5 --- /dev/null +++ b/bonus/bdd/cucumber/syntax/course-scenario-outline/Makefile @@ -0,0 +1,5 @@ +cucumber: + cucumber.js tests/features -r tests/features/step-definitions + +.PHONY: cucumber + diff --git a/bonus/bdd/cucumber/syntax/course-scenario-outline/tests/features/product-list.feature b/bonus/bdd/cucumber/syntax/course-scenario-outline/tests/features/product-list.feature new file mode 100644 index 0000000..d504c24 --- /dev/null +++ b/bonus/bdd/cucumber/syntax/course-scenario-outline/tests/features/product-list.feature @@ -0,0 +1,11 @@ +Feature: Test Product List With Scenario Outlines + + Scenario Outline: Search an existing product in list + Given sort by drop-down value is Newest + When I type in search text box + Then the first product is + + Examples: + | key | product name | + | google | Nexus S | + | dell | Dell Streak 7 | diff --git a/bonus/bdd/cucumber/syntax/course-scenario-outline/tests/features/step-definitions/productListStepDef.js b/bonus/bdd/cucumber/syntax/course-scenario-outline/tests/features/step-definitions/productListStepDef.js new file mode 100644 index 0000000..6918907 --- /dev/null +++ b/bonus/bdd/cucumber/syntax/course-scenario-outline/tests/features/step-definitions/productListStepDef.js @@ -0,0 +1,39 @@ +var protractor = require('/usr/local/lib/node_modules/protractor') + , webdriver = require('/usr/local/lib/node_modules/selenium-webdriver'); + +var productListTest = function() { + var self = this; + + this.Before(function(next) { + var driver = new webdriver.Builder() + .usingServer('http://localhost:4444/wd/hub') + .withCapabilities(webdriver.Capabilities['firefox']()) + .build(); + + driver.manage().timeouts().setScriptTimeout(100000); + self.browser = protractor.wrapDriver(driver); + self.protractor = protractor; + self.by = protractor.By; + + self.browser.get('http://localhost/step6').then(function(result){ + setTimeout(next, 1000); + }); + }); + + this.Given(/^sort by drop\-down value is (\w+)$/, function (orderBy, next) { + next(); + }); + + this.When(/^I type (\w+) in search text box$/, function (key, next) { + self.browser.findElement(self.by.model('query')) + .sendKeys(key).then(function(result) { + next(); + }); + }); + + this.Then(/^the first product is (\w+)$/, function (result, next) { + next(); + }); +} + +module.exports = productListTest; diff --git a/bonus/bdd/cucumber/syntax/course-scenario-outline/tests/features/step-definitions/productListStepDef.js~ b/bonus/bdd/cucumber/syntax/course-scenario-outline/tests/features/step-definitions/productListStepDef.js~ new file mode 100644 index 0000000..82d081a --- /dev/null +++ b/bonus/bdd/cucumber/syntax/course-scenario-outline/tests/features/step-definitions/productListStepDef.js~ @@ -0,0 +1,19 @@ +var productListTest = function() { + this.World = require("../support/world.js").World; + this.controller = null; + + this.Given(/^sort by drop\-down value is (\w+)$/, function (orderBy, next) { + this.controller = + next(); + }); + + this.When(/^I type (\w+) in search text box$/, function (key, next) { + next(); + }); + + this.Then(/^the first product is (\w+) S$/, function (result, next) { + next(); + }); +} + +module.exports = productListTest; diff --git a/bonus/bdd/cucumber/syntax/course-scenario-outline/tests/features/support/world.js b/bonus/bdd/cucumber/syntax/course-scenario-outline/tests/features/support/world.js new file mode 100644 index 0000000..858677a --- /dev/null +++ b/bonus/bdd/cucumber/syntax/course-scenario-outline/tests/features/support/world.js @@ -0,0 +1,16 @@ +var pc = require('protractor-cucumber'); + +var World = function(callback) { + var seleniumAddress = 'http://localhost:4444/wd/hub'; + var options = { browser : 'firefox', timeout : 100000 }; + + this.World = pc.world(seleniumAddress, options); + + this.After(function(callback) { + this.quit(callback); + }); + + callback(this); +} + +module.exports = World; diff --git a/bonus/bdd/cucumber/syntax/course-scenario-outline/tests/features/support/world.js~ b/bonus/bdd/cucumber/syntax/course-scenario-outline/tests/features/support/world.js~ new file mode 100644 index 0000000..03c0635 --- /dev/null +++ b/bonus/bdd/cucumber/syntax/course-scenario-outline/tests/features/support/world.js~ @@ -0,0 +1,5 @@ +var World = function(callback) { + callback(this); +} + +module.exports = World; diff --git a/bonus/bdd/cucumber/syntax/hooks/Makefile b/bonus/bdd/cucumber/syntax/hooks/Makefile new file mode 100644 index 0000000..72e81c5 --- /dev/null +++ b/bonus/bdd/cucumber/syntax/hooks/Makefile @@ -0,0 +1,5 @@ +cucumber: + cucumber.js tests/features -r tests/features/step-definitions + +.PHONY: cucumber + diff --git a/bonus/bdd/cucumber/syntax/hooks/tests/features/hook-withfailscenario.feature b/bonus/bdd/cucumber/syntax/hooks/tests/features/hook-withfailscenario.feature new file mode 100644 index 0000000..5d484d9 --- /dev/null +++ b/bonus/bdd/cucumber/syntax/hooks/tests/features/hook-withfailscenario.feature @@ -0,0 +1,7 @@ +Feature: Hooks example + + Scenario: I've declared a scenario and it is passed + Given this step is passed + + Scenario: I've declared a scenario and it is failed + Given this step is failed \ No newline at end of file diff --git a/bonus/bdd/cucumber/syntax/hooks/tests/features/hooks.feature b/bonus/bdd/cucumber/syntax/hooks/tests/features/hooks.feature new file mode 100644 index 0000000..cecfbff --- /dev/null +++ b/bonus/bdd/cucumber/syntax/hooks/tests/features/hooks.feature @@ -0,0 +1,4 @@ +Feature: Hooks example + + Scenario: I've declared a scenario and it is passed + Given this step is passed \ No newline at end of file diff --git a/bonus/bdd/cucumber/syntax/hooks/tests/features/step-definitions/hooksDef.js b/bonus/bdd/cucumber/syntax/hooks/tests/features/step-definitions/hooksDef.js new file mode 100644 index 0000000..de8163e --- /dev/null +++ b/bonus/bdd/cucumber/syntax/hooks/tests/features/step-definitions/hooksDef.js @@ -0,0 +1,51 @@ +var util = require('util'); + +var hooksTest = function() { + this.Before(function(callback) { + console.log("Before running the scenario"); + callback(); + }); + + this.After(function(callback) { + console.log("After running the scenario"); + callback(); + }); + + this.registerHandler("AfterFeature", function(event, callback) { + console.log("After feature is running"); + callback(); + }); + + this.registerHandler("BeforeFeature", function(event, callback) { + console.log("Before feature is running, with event: \n" + util.inspect(event) + + "\ncallback: \n" + util.inspect(callback)); + callback(); + }); + + this.registerHandler("BeforeStep", function(event, callback) { + console.log("running " + event.getName()); + callback(); + }); + + /* + this.Around(function(scenario) { + console.log("[Around] before running scenario: \n" + util.inspect(scenario) + "\n"); + + scenario(function(callback) { + console.log("[Around] after running scenario"); + callback(); + }); + }); + */ + + this.Given(/^this step is (\w+)$/, function (result, next) { + if ( result == "passed" ) { + console.log("running a passed step"); + next(); + } else { + next.fail(new Error("this step is failed")); + } + }); +} + +module.exports = hooksTest; diff --git a/bonus/bdd/cucumber/syntax/hooks/tests/features/step-definitions/tagHooksDef.js b/bonus/bdd/cucumber/syntax/hooks/tests/features/step-definitions/tagHooksDef.js new file mode 100644 index 0000000..4cc361e --- /dev/null +++ b/bonus/bdd/cucumber/syntax/hooks/tests/features/step-definitions/tagHooksDef.js @@ -0,0 +1,29 @@ +var util = require('util'); + +var tagHooksTest = function() { + this.Before("@bvt", function(scenario, next) { + console.log("before running @bvt scenario: " + scenario.getName()); + next(); + }); + + this.After("@bvt,@压力测试", function(scenario, next) { + console.log("After running @bvt and @压力测试 scenario: " + scenario.getName()); + next(); + }); + + this.When(/^run scenario "([^"]+)"$/, function(name, callback) { + console.log("run scenario: " + name); + callback(); + }); + + this.Given(/^this step is (\w+)$/, function (result, next) { + if ( result == "passed" ) { + console.log("running a passed step"); + next(); + } else { + next.fail(new Error("this step is failed")); + } + }); +} + +module.exports = tagHooksTest; diff --git a/bonus/bdd/cucumber/syntax/hooks/tests/features/support/world.js~ b/bonus/bdd/cucumber/syntax/hooks/tests/features/support/world.js~ new file mode 100644 index 0000000..03c0635 --- /dev/null +++ b/bonus/bdd/cucumber/syntax/hooks/tests/features/support/world.js~ @@ -0,0 +1,5 @@ +var World = function(callback) { + callback(this); +} + +module.exports = World; diff --git a/bonus/bdd/cucumber/syntax/hooks/tests/features/tagHooks.feature b/bonus/bdd/cucumber/syntax/hooks/tests/features/tagHooks.feature new file mode 100644 index 0000000..7a2a6bb --- /dev/null +++ b/bonus/bdd/cucumber/syntax/hooks/tests/features/tagHooks.feature @@ -0,0 +1,11 @@ +@bvt @功能 +Feature: 包含 @bvt @功能 的Feature + 用来演示 cucumber 的 tag 测试 + + @登录 + Scenario: 包含 @登录 的场景 + When run scenario "包含 @登录 的场景" + + @压力测试 + Scenario: 包含 @压力测试 的场景 + When run scenario "包含 @压力测试 的场景" \ No newline at end of file diff --git a/bonus/bdd/cucumber/syntax/research/.DS_Store b/bonus/bdd/cucumber/syntax/research/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..7a999ff412dbb7c4167180c08e9a382449159ce1 GIT binary patch literal 6148 zcmeHKu}T9`5Zu*(0h^STue9|K9w8B|{Q+}HBLo71jn!3tmwy&#b{8>Rti(oUVRzo! zw{tHy#ckHieEGV&Gh3M198R=%hNSn(?WBMd_*V+}Z1uQW;+3kmPF{|^w!xp^toeY`unr1B lv}0hjV{F)tZ=xvc8rL}Qg=1pSkq5UpM%E_jg~77rQ*Pl6cSF9>)UWE8w5nzJOk8~k9_5sXJ+JbU!wFY=Uw zkW2oJzUpo_-P=85yo3a+p}U6eS6#2(?DlNU5|P@v7`2HOiKvOrc3~bvr13iUpf&8w z3ao-Z(J`IUH)`+Z#V|n2geV{ihytR3C?E>_3ku+w&8=DS+&8N-iUOj*t5kr`hXkE% zYHew(J~}Yy5&(7<)4Jgrb%6FstWB*gjn%H$(^L=2x++^@DC3UxgyFEMwWYDfos@AW zWg{zFp(q_4eu;*YN{y9K6c7bM1y(TCq!ao|=QMWf_d#9^u*P4f9rV=)-EbAbkIskr zpeShwc4gF+S6-w6qz+jEgKAU3|w&gZtL{4~-1=85g5xF=t0^tdG3W^gbPa zIpHM7(dv@x)Fs#PlUu%t1$2_T>|Qgckd%{LCFT#3>-x#5J;bU@uIuxk`yAocb@;!% zx@GzSe_$pzrxN4yPhgz z-G|>>I;30cKRMP@Fo){Yibt@qV1GWy^IxkcgDCKF1!j!PBG>=h)$jjbzOi_S0;0fw zqkx*t_OmU}wY7CXoNMg_{R=ub#+Alu7Yq#Hd0mdfPW~{&bz;|2YfEFXf+jBlv{ZK33>rUf?$y-5pDP37Cja_uEU!TB?YrZg3d_x zv*+WnpA=6_M7-KJOQHo4&Cvu|1{o1`)^y>{mq3;^nr+?Q_kD}WUlG}RL0cN=f$Hi0 zkIMFOxvBeZ@DsgF1G>Jdn*FXOdcA%*sK+s`>zf~K!_#z4A)jX0#52`jvfX}KGPyh^ zlgTZaJi5u~f`MQl7zhT=nE@};^Q&_vA}0)udUyXC$%=A-Jywy-zWnJ##)MjT8c4| gd*nuqW=}GPy>uK6WfjqDI52($l#u9xfnQ+Y9W(AgX#fBK literal 0 HcmV?d00001 diff --git a/bonus/bdd/jasmine/jasmine1/SpecRunner.html b/bonus/bdd/jasmine/jasmine1/SpecRunner.html new file mode 100755 index 0000000..a30c949 --- /dev/null +++ b/bonus/bdd/jasmine/jasmine1/SpecRunner.html @@ -0,0 +1,24 @@ + + + + + Jasmine Spec Runner v2.0.1 + + + + + + + + + + + + + + + + + + + diff --git a/bonus/bdd/jasmine/jasmine1/spec/sourceSpec.js b/bonus/bdd/jasmine/jasmine1/spec/sourceSpec.js new file mode 100755 index 0000000..456adc4 --- /dev/null +++ b/bonus/bdd/jasmine/jasmine1/spec/sourceSpec.js @@ -0,0 +1,9 @@ +describe("Hello world", function() { + it("says hello", function() { + expect(helloWorld()).toEqual("Hello world!"); + }); + + it("says world", function() { + expect(helloWorld()).toContain("world"); + }); +}); diff --git a/bonus/bdd/jasmine/jasmine1/src/source.js b/bonus/bdd/jasmine/jasmine1/src/source.js new file mode 100755 index 0000000..09763b6 --- /dev/null +++ b/bonus/bdd/jasmine/jasmine1/src/source.js @@ -0,0 +1,3 @@ +function helloWorld() { + return "Hello world!"; +} diff --git a/bonus/bdd/jasmine/jasmine2/.DS_Store b/bonus/bdd/jasmine/jasmine2/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..1b3ac6e53c0320db22d1be984497d6b4b5556482 GIT binary patch literal 6148 zcmeHKy-veG47Sq@1(u45@m9vpEKwDnpf7+(5DbkHQM!k>;IVilKL02rYAP`yL2b$R z-TCbM`4Yu35%K0wuZdPfw1f&~7ieZg=0%SrbIT==WsQ1Y?H=29he62SU_hQ-PJ8O; ziK_AQ8;rZ>^|or8&hC@ljsu#uEbGHtMf7?7{-GX2T+`Mk=en2in)33|0*82=9>Go1 z1JK>K^UU@hGqbtR%xtaajwTog27-YzV!+e%^6HH499Innf`OkgAm4`s6)YTkL;ZB1 z(Gmcd!>oe7{>}lD7=VRiZwL#7Efi>>>?HnC+5 zE)1g$27-Yp0}C6jB>&%^uK%Y&F$xBPfq%sS=jFEC;7Xobk1i*`6Mn!m&4m1rk33N<%ckz^^j!1@)#xW&i*H literal 0 HcmV?d00001 diff --git a/bonus/bdd/jasmine/jasmine2/SpecRunner.html b/bonus/bdd/jasmine/jasmine2/SpecRunner.html new file mode 100755 index 0000000..a30c949 --- /dev/null +++ b/bonus/bdd/jasmine/jasmine2/SpecRunner.html @@ -0,0 +1,24 @@ + + + + + Jasmine Spec Runner v2.0.1 + + + + + + + + + + + + + + + + + + + diff --git a/bonus/bdd/jasmine/jasmine2/spec/sourceSpec.js b/bonus/bdd/jasmine/jasmine2/spec/sourceSpec.js new file mode 100755 index 0000000..1c952c2 --- /dev/null +++ b/bonus/bdd/jasmine/jasmine2/spec/sourceSpec.js @@ -0,0 +1,29 @@ +describe("Hello world", function() { + beforeEach(function() { + jasmine.addMatchers({ + toBeDivisibleByTwo: function() { + return { + compare: function(actual, expected) { + var result = { + pass: (actual % 2) === 0 + }; + + /* + if ( result.pass ) { + result.message = actual + " is dividable!"; + } else { + result.message = actual + " is not dividable!!!"; + } + */ + + return result; + } + }; + } + }); + }); + + it("is divisible by 2", function() { + expect(gimmeANumber()).toBeDivisibleByTwo(); + }); +}); diff --git a/bonus/bdd/jasmine/jasmine2/src/source.js b/bonus/bdd/jasmine/jasmine2/src/source.js new file mode 100755 index 0000000..eef024d --- /dev/null +++ b/bonus/bdd/jasmine/jasmine2/src/source.js @@ -0,0 +1,4 @@ +function gimmeANumber() { + return 3; + // return 4; +} diff --git a/bonus/bdd/jasmine/jasmine3/SpecRunner.html b/bonus/bdd/jasmine/jasmine3/SpecRunner.html new file mode 100755 index 0000000..a30c949 --- /dev/null +++ b/bonus/bdd/jasmine/jasmine3/SpecRunner.html @@ -0,0 +1,24 @@ + + + + + Jasmine Spec Runner v2.0.1 + + + + + + + + + + + + + + + + + + + diff --git a/bonus/bdd/jasmine/jasmine3/spec/sourceSpec.js b/bonus/bdd/jasmine/jasmine3/spec/sourceSpec.js new file mode 100755 index 0000000..11427a9 --- /dev/null +++ b/bonus/bdd/jasmine/jasmine3/spec/sourceSpec.js @@ -0,0 +1,22 @@ +describe("Person", function() { + it("calls the sayHello() function", function() { + var fakePerson = new Person(); + spyOn(fakePerson, "sayHello"); + fakePerson.helloSomeone("world"); + expect(fakePerson.sayHello).toHaveBeenCalled(); + }); + + it("greets the world", function() { + var fakePerson = new Person(); + spyOn(fakePerson, "helloSomeone"); + fakePerson.helloSomeone("world"); + expect(fakePerson.helloSomeone).toHaveBeenCalledWith("world"); + }); + + it("not greets the foo", function() { + var fakePerson = new Person(); + spyOn(fakePerson, "helloSomeone"); + fakePerson.helloSomeone("world"); + expect(fakePerson.helloSomeone).not.toHaveBeenCalledWith("foo"); + }); +}); diff --git a/bonus/bdd/jasmine/jasmine3/src/source.js b/bonus/bdd/jasmine/jasmine3/src/source.js new file mode 100755 index 0000000..3821b40 --- /dev/null +++ b/bonus/bdd/jasmine/jasmine3/src/source.js @@ -0,0 +1,10 @@ +var Person = function() {}; + +Person.prototype.helloSomeone = function(toGreet) { + return this.sayHello() + " " + toGreet; +}; + +Person.prototype.sayHello = function() { + return "Hello"; +} + diff --git a/bonus/bdd/jasmine/jasmine3/src/source.js~ b/bonus/bdd/jasmine/jasmine3/src/source.js~ new file mode 100755 index 0000000..bed98f4 --- /dev/null +++ b/bonus/bdd/jasmine/jasmine3/src/source.js~ @@ -0,0 +1,11 @@ +var Person = function() {}; + +Person.prototype.helloSomeone = function(toGreet) { + return "Hello" + " " + toGreet; +}; + +/* +Person.prototype.sayHello = function() { + return "Hello"; +} +/* diff --git a/bonus/bdd/jasmine/jasmine4/.DS_Store b/bonus/bdd/jasmine/jasmine4/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..838db095477088e147d2cbdec4b0cd9c2c7db853 GIT binary patch literal 6148 zcmeHKOHKnZ47J-?RAN)HVwo%S22nLVLANZBW)LhG%?Ri|+=3Ia=14q$D4i0v2q9Za zUSh{_@}!B!M8w-ezad%^(F#qFWl#}OS4|6FEJl_+9_}{#ZXBk{CVy2WXK(0~MDLd`uX>%M-!S$++NS$cPK0M#BHrV9GNff~B zSPY?ou(<-wmA%AZbB8|py6jjC&7Ihb5BA8P#S3e6?4NWwaW;%T7zhUD3@mNBmi)iN zCsQr*=Poe|27-Zq#sD|%zTM(do?E|NPjYQSyFn9?bwvgcj5QSlH5Fqb@5q%J&7Nco Ydv+{_vWw`|9T-0XN=S6Uz%MZH0l`5#FaQ7m literal 0 HcmV?d00001 diff --git a/bonus/bdd/jasmine/jasmine4/SpecRunner.html b/bonus/bdd/jasmine/jasmine4/SpecRunner.html new file mode 100755 index 0000000..a30c949 --- /dev/null +++ b/bonus/bdd/jasmine/jasmine4/SpecRunner.html @@ -0,0 +1,24 @@ + + + + + Jasmine Spec Runner v2.0.1 + + + + + + + + + + + + + + + + + + + diff --git a/bonus/bdd/jasmine/jasmine4/spec/sourceSpec.js b/bonus/bdd/jasmine/jasmine4/spec/sourceSpec.js new file mode 100755 index 0000000..25e2242 --- /dev/null +++ b/bonus/bdd/jasmine/jasmine4/spec/sourceSpec.js @@ -0,0 +1,23 @@ +describe("Person", function() { + it("says hello", function() { + var fakePerson = new Person(); + fakePerson.sayHello = jasmine + .createSpy("Say-hello spy"); + fakePerson.helloSomeone("world"); + expect(fakePerson.sayHello).toHaveBeenCalled(); + }); + + it("says ello ello", function() { + var fakePerson = new Person(); + fakePerson.sayHello = jasmine + .createSpy("say bonjour") + .and + .callFake(function() { + console.log("Time to say bonjour"); + return "bonjour"; + }); + + fakePerson.helloSomeone("world"); + expect(fakePerson.sayHello).toHaveBeenCalled(); + }); +}); diff --git a/bonus/bdd/jasmine/jasmine4/src/source.js b/bonus/bdd/jasmine/jasmine4/src/source.js new file mode 100755 index 0000000..a83bfaf --- /dev/null +++ b/bonus/bdd/jasmine/jasmine4/src/source.js @@ -0,0 +1,11 @@ +var Person = function() {}; + +Person.prototype.helloSomeone = function(toGreet) { + return this.sayHello() + " " + toGreet; +}; + +/* +Person.prototype.sayHello = function() { + return "Hello"; +} +*/ diff --git a/bonus/bdd/jasmine/jasmine5/SpecRunner.html b/bonus/bdd/jasmine/jasmine5/SpecRunner.html new file mode 100755 index 0000000..05db5c4 --- /dev/null +++ b/bonus/bdd/jasmine/jasmine5/SpecRunner.html @@ -0,0 +1,24 @@ + + + + + Jasmine Spec Runner v2.0.1 + + + + + + + + + + + + + + + + + + + diff --git a/bonus/bdd/jasmine/jasmine5/spec/downloaderSpec.js b/bonus/bdd/jasmine/jasmine5/spec/downloaderSpec.js new file mode 100755 index 0000000..0d65314 --- /dev/null +++ b/bonus/bdd/jasmine/jasmine5/spec/downloaderSpec.js @@ -0,0 +1,14 @@ +describe("Downloader", function () { + var answer = null; + + beforeEach(function (done) { + var d = new Downloader(); + answer = d.download( + "https://www.google.com/?q=ultimate%20answer%20to%20the%20universe", + done); + }); + + it("wait download asynchronously", function () { + expect(answer.content).toEqual("42"); + }); +}); \ No newline at end of file diff --git a/bonus/bdd/jasmine/jasmine5/src/downloader.js b/bonus/bdd/jasmine/jasmine5/src/downloader.js new file mode 100755 index 0000000..33392b8 --- /dev/null +++ b/bonus/bdd/jasmine/jasmine5/src/downloader.js @@ -0,0 +1,17 @@ +function Downloader() { + this.completed = false; + this.future = { content: '' }; +} + +Downloader.prototype.download = function (url, callback) { + console.log("start downloading " + url + " ..."); + var self = this; + setTimeout(function () { + self.completed = true; + self.future.content = "42"; + + callback(); + }, 2000); + + return self.future; +} \ No newline at end of file diff --git a/bonus/bdd/jasmine/lib/.DS_Store b/bonus/bdd/jasmine/lib/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b7b02ac1a9ba6b9d7ecb3d4a07ec611299e53370 GIT binary patch literal 6148 zcmeHKT}s423{G@~1rZjXe4Gm?Ry;si>IwD&YAgQG+J$xB>n%KmXYnW=!7o2bi>2U; zh$JxiGBZg!^Fe1OM8wN&l@Tq7XpSbxVvL9kk528l^B#~j$2~pL4IR@Nos1;$a`2y(zc)Hd~c#v(_E*>-n^I(-uXweJY9G4xe8%W?~6V zTm8U$eb-;fyCx463^#v1Hr%-19CnjG{M}lGt{F4N=pFX z48tn0rIwJG 0) { + printNewline(); + + var specCounts = specCount + ' ' + plural('spec', specCount) + ', ' + + failureCount + ' ' + plural('failure', failureCount); + + if (pendingCount) { + specCounts += ', ' + pendingCount + ' pending ' + plural('spec', pendingCount); + } + + print(specCounts); + } else { + print('No specs found'); + } + + printNewline(); + var seconds = timer.elapsed() / 1000; + print('Finished in ' + seconds + ' ' + plural('second', seconds)); + + printNewline(); + + onComplete(failureCount === 0); + }; + + this.specDone = function(result) { + specCount++; + + if (result.status == 'pending') { + pendingCount++; + print(colored('yellow', '*')); + return; + } + + if (result.status == 'passed') { + print(colored('green', '.')); + return; + } + + if (result.status == 'failed') { + failureCount++; + failedSpecs.push(result); + print(colored('red', 'F')); + } + }; + + return this; + + function printNewline() { + print('\n'); + } + + function colored(color, str) { + return showColors ? (ansi[color] + str + ansi.none) : str; + } + + function plural(str, count) { + return count == 1 ? str : str + 's'; + } + + function repeat(thing, times) { + var arr = []; + for (var i = 0; i < times; i++) { + arr.push(thing); + } + return arr; + } + + function indent(str, spaces) { + var lines = (str || '').split('\n'); + var newArr = []; + for (var i = 0; i < lines.length; i++) { + newArr.push(repeat(' ', spaces).join('') + lines[i]); + } + return newArr.join('\n'); + } + + function specFailureDetails(result) { + printNewline(); + print(result.fullName); + + for (var i = 0; i < result.failedExpectations.length; i++) { + var failedExpectation = result.failedExpectations[i]; + printNewline(); + print(indent(failedExpectation.stack, 2)); + } + + printNewline(); + } + } + + return ConsoleReporter; +}; diff --git a/bonus/bdd/jasmine/lib/jasmine-2.0.1/jasmine-html.js b/bonus/bdd/jasmine/lib/jasmine-2.0.1/jasmine-html.js new file mode 100755 index 0000000..9d95903 --- /dev/null +++ b/bonus/bdd/jasmine/lib/jasmine-2.0.1/jasmine-html.js @@ -0,0 +1,390 @@ +/* +Copyright (c) 2008-2014 Pivotal Labs + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +jasmineRequire.html = function(j$) { + j$.ResultsNode = jasmineRequire.ResultsNode(); + j$.HtmlReporter = jasmineRequire.HtmlReporter(j$); + j$.QueryString = jasmineRequire.QueryString(); + j$.HtmlSpecFilter = jasmineRequire.HtmlSpecFilter(); +}; + +jasmineRequire.HtmlReporter = function(j$) { + + var noopTimer = { + start: function() {}, + elapsed: function() { return 0; } + }; + + function HtmlReporter(options) { + var env = options.env || {}, + getContainer = options.getContainer, + createElement = options.createElement, + createTextNode = options.createTextNode, + onRaiseExceptionsClick = options.onRaiseExceptionsClick || function() {}, + timer = options.timer || noopTimer, + results = [], + specsExecuted = 0, + failureCount = 0, + pendingSpecCount = 0, + htmlReporterMain, + symbols; + + this.initialize = function() { + clearPrior(); + htmlReporterMain = createDom('div', {className: 'jasmine_html-reporter'}, + createDom('div', {className: 'banner'}, + createDom('a', {className: 'title', href: 'http://jasmine.github.io/', target: '_blank'}), + createDom('span', {className: 'version'}, j$.version) + ), + createDom('ul', {className: 'symbol-summary'}), + createDom('div', {className: 'alert'}), + createDom('div', {className: 'results'}, + createDom('div', {className: 'failures'}) + ) + ); + getContainer().appendChild(htmlReporterMain); + + symbols = find('.symbol-summary'); + }; + + var totalSpecsDefined; + this.jasmineStarted = function(options) { + totalSpecsDefined = options.totalSpecsDefined || 0; + timer.start(); + }; + + var summary = createDom('div', {className: 'summary'}); + + var topResults = new j$.ResultsNode({}, '', null), + currentParent = topResults; + + this.suiteStarted = function(result) { + currentParent.addChild(result, 'suite'); + currentParent = currentParent.last(); + }; + + this.suiteDone = function(result) { + if (currentParent == topResults) { + return; + } + + currentParent = currentParent.parent; + }; + + this.specStarted = function(result) { + currentParent.addChild(result, 'spec'); + }; + + var failures = []; + this.specDone = function(result) { + if(noExpectations(result) && console && console.error) { + console.error('Spec \'' + result.fullName + '\' has no expectations.'); + } + + if (result.status != 'disabled') { + specsExecuted++; + } + + symbols.appendChild(createDom('li', { + className: noExpectations(result) ? 'empty' : result.status, + id: 'spec_' + result.id, + title: result.fullName + } + )); + + if (result.status == 'failed') { + failureCount++; + + var failure = + createDom('div', {className: 'spec-detail failed'}, + createDom('div', {className: 'description'}, + createDom('a', {title: result.fullName, href: specHref(result)}, result.fullName) + ), + createDom('div', {className: 'messages'}) + ); + var messages = failure.childNodes[1]; + + for (var i = 0; i < result.failedExpectations.length; i++) { + var expectation = result.failedExpectations[i]; + messages.appendChild(createDom('div', {className: 'result-message'}, expectation.message)); + messages.appendChild(createDom('div', {className: 'stack-trace'}, expectation.stack)); + } + + failures.push(failure); + } + + if (result.status == 'pending') { + pendingSpecCount++; + } + }; + + this.jasmineDone = function() { + var banner = find('.banner'); + banner.appendChild(createDom('span', {className: 'duration'}, 'finished in ' + timer.elapsed() / 1000 + 's')); + + var alert = find('.alert'); + + alert.appendChild(createDom('span', { className: 'exceptions' }, + createDom('label', { className: 'label', 'for': 'raise-exceptions' }, 'raise exceptions'), + createDom('input', { + className: 'raise', + id: 'raise-exceptions', + type: 'checkbox' + }) + )); + var checkbox = find('#raise-exceptions'); + + checkbox.checked = !env.catchingExceptions(); + checkbox.onclick = onRaiseExceptionsClick; + + if (specsExecuted < totalSpecsDefined) { + var skippedMessage = 'Ran ' + specsExecuted + ' of ' + totalSpecsDefined + ' specs - run all'; + alert.appendChild( + createDom('span', {className: 'bar skipped'}, + createDom('a', {href: '?', title: 'Run all specs'}, skippedMessage) + ) + ); + } + var statusBarMessage = ''; + var statusBarClassName = 'bar '; + + if (totalSpecsDefined > 0) { + statusBarMessage += pluralize('spec', specsExecuted) + ', ' + pluralize('failure', failureCount); + if (pendingSpecCount) { statusBarMessage += ', ' + pluralize('pending spec', pendingSpecCount); } + statusBarClassName += (failureCount > 0) ? 'failed' : 'passed'; + } else { + statusBarClassName += 'skipped'; + statusBarMessage += 'No specs found'; + } + + alert.appendChild(createDom('span', {className: statusBarClassName}, statusBarMessage)); + + var results = find('.results'); + results.appendChild(summary); + + summaryList(topResults, summary); + + function summaryList(resultsTree, domParent) { + var specListNode; + for (var i = 0; i < resultsTree.children.length; i++) { + var resultNode = resultsTree.children[i]; + if (resultNode.type == 'suite') { + var suiteListNode = createDom('ul', {className: 'suite', id: 'suite-' + resultNode.result.id}, + createDom('li', {className: 'suite-detail'}, + createDom('a', {href: specHref(resultNode.result)}, resultNode.result.description) + ) + ); + + summaryList(resultNode, suiteListNode); + domParent.appendChild(suiteListNode); + } + if (resultNode.type == 'spec') { + if (domParent.getAttribute('class') != 'specs') { + specListNode = createDom('ul', {className: 'specs'}); + domParent.appendChild(specListNode); + } + var specDescription = resultNode.result.description; + if(noExpectations(resultNode.result)) { + specDescription = 'SPEC HAS NO EXPECTATIONS ' + specDescription; + } + specListNode.appendChild( + createDom('li', { + className: resultNode.result.status, + id: 'spec-' + resultNode.result.id + }, + createDom('a', {href: specHref(resultNode.result)}, specDescription) + ) + ); + } + } + } + + if (failures.length) { + alert.appendChild( + createDom('span', {className: 'menu bar spec-list'}, + createDom('span', {}, 'Spec List | '), + createDom('a', {className: 'failures-menu', href: '#'}, 'Failures'))); + alert.appendChild( + createDom('span', {className: 'menu bar failure-list'}, + createDom('a', {className: 'spec-list-menu', href: '#'}, 'Spec List'), + createDom('span', {}, ' | Failures '))); + + find('.failures-menu').onclick = function() { + setMenuModeTo('failure-list'); + }; + find('.spec-list-menu').onclick = function() { + setMenuModeTo('spec-list'); + }; + + setMenuModeTo('failure-list'); + + var failureNode = find('.failures'); + for (var i = 0; i < failures.length; i++) { + failureNode.appendChild(failures[i]); + } + } + }; + + return this; + + function find(selector) { + return getContainer().querySelector('.jasmine_html-reporter ' + selector); + } + + function clearPrior() { + // return the reporter + var oldReporter = find(''); + + if(oldReporter) { + getContainer().removeChild(oldReporter); + } + } + + function createDom(type, attrs, childrenVarArgs) { + var el = createElement(type); + + for (var i = 2; i < arguments.length; i++) { + var child = arguments[i]; + + if (typeof child === 'string') { + el.appendChild(createTextNode(child)); + } else { + if (child) { + el.appendChild(child); + } + } + } + + for (var attr in attrs) { + if (attr == 'className') { + el[attr] = attrs[attr]; + } else { + el.setAttribute(attr, attrs[attr]); + } + } + + return el; + } + + function pluralize(singular, count) { + var word = (count == 1 ? singular : singular + 's'); + + return '' + count + ' ' + word; + } + + function specHref(result) { + return '?spec=' + encodeURIComponent(result.fullName); + } + + function setMenuModeTo(mode) { + htmlReporterMain.setAttribute('class', 'jasmine_html-reporter ' + mode); + } + + function noExpectations(result) { + return (result.failedExpectations.length + result.passedExpectations.length) === 0 && + result.status === 'passed'; + } + } + + return HtmlReporter; +}; + +jasmineRequire.HtmlSpecFilter = function() { + function HtmlSpecFilter(options) { + var filterString = options && options.filterString() && options.filterString().replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); + var filterPattern = new RegExp(filterString); + + this.matches = function(specName) { + return filterPattern.test(specName); + }; + } + + return HtmlSpecFilter; +}; + +jasmineRequire.ResultsNode = function() { + function ResultsNode(result, type, parent) { + this.result = result; + this.type = type; + this.parent = parent; + + this.children = []; + + this.addChild = function(result, type) { + this.children.push(new ResultsNode(result, type, this)); + }; + + this.last = function() { + return this.children[this.children.length - 1]; + }; + } + + return ResultsNode; +}; + +jasmineRequire.QueryString = function() { + function QueryString(options) { + + this.setParam = function(key, value) { + var paramMap = queryStringToParamMap(); + paramMap[key] = value; + options.getWindowLocation().search = toQueryString(paramMap); + }; + + this.getParam = function(key) { + return queryStringToParamMap()[key]; + }; + + return this; + + function toQueryString(paramMap) { + var qStrPairs = []; + for (var prop in paramMap) { + qStrPairs.push(encodeURIComponent(prop) + '=' + encodeURIComponent(paramMap[prop])); + } + return '?' + qStrPairs.join('&'); + } + + function queryStringToParamMap() { + var paramStr = options.getWindowLocation().search.substring(1), + params = [], + paramMap = {}; + + if (paramStr.length > 0) { + params = paramStr.split('&'); + for (var i = 0; i < params.length; i++) { + var p = params[i].split('='); + var value = decodeURIComponent(p[1]); + if (value === 'true' || value === 'false') { + value = JSON.parse(value); + } + paramMap[decodeURIComponent(p[0])] = value; + } + } + + return paramMap; + } + + } + + return QueryString; +}; diff --git a/bonus/bdd/jasmine/lib/jasmine-2.0.1/jasmine.css b/bonus/bdd/jasmine/lib/jasmine-2.0.1/jasmine.css new file mode 100755 index 0000000..c54ff30 --- /dev/null +++ b/bonus/bdd/jasmine/lib/jasmine-2.0.1/jasmine.css @@ -0,0 +1,59 @@ +body { overflow-y: scroll; } + +.jasmine_html-reporter { background-color: #eeeeee; padding: 5px; margin: -8px; font-size: 11px; font-family: Monaco, "Lucida Console", monospace; line-height: 14px; color: #333333; } +.jasmine_html-reporter a { text-decoration: none; } +.jasmine_html-reporter a:hover { text-decoration: underline; } +.jasmine_html-reporter p, .jasmine_html-reporter h1, .jasmine_html-reporter h2, .jasmine_html-reporter h3, .jasmine_html-reporter h4, .jasmine_html-reporter h5, .jasmine_html-reporter h6 { margin: 0; line-height: 14px; } +.jasmine_html-reporter .banner, .jasmine_html-reporter .symbol-summary, .jasmine_html-reporter .summary, .jasmine_html-reporter .result-message, .jasmine_html-reporter .spec .description, .jasmine_html-reporter .spec-detail .description, .jasmine_html-reporter .alert .bar, .jasmine_html-reporter .stack-trace { padding-left: 9px; padding-right: 9px; } +.jasmine_html-reporter .banner { position: relative; } +.jasmine_html-reporter .banner .title { background: url('data:image/png;base64,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') no-repeat; background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICB3aWR0aD0iNjgxLjk2MjUyIgogICBoZWlnaHQ9IjE4Ny41IgogICBpZD0ic3ZnMiIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhOCI+PHJkZjpSREY+PGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPjxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PjxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz48L2NjOldvcms+PC9yZGY6UkRGPjwvbWV0YWRhdGE+PGRlZnMKICAgICBpZD0iZGVmczYiPjxjbGlwUGF0aAogICAgICAgaWQ9ImNsaXBQYXRoMTgiPjxwYXRoCiAgICAgICAgIGQ9Ik0gMCwxNTAwIDAsMCBsIDU0NTUuNzQsMCAwLDE1MDAgTCAwLDE1MDAgeiIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgyMCIgLz48L2NsaXBQYXRoPjwvZGVmcz48ZwogICAgIHRyYW5zZm9ybT0ibWF0cml4KDEuMjUsMCwwLC0xLjI1LDAsMTg3LjUpIgogICAgIGlkPSJnMTAiPjxnCiAgICAgICB0cmFuc2Zvcm09InNjYWxlKDAuMSwwLjEpIgogICAgICAgaWQ9ImcxMiI+PGcKICAgICAgICAgaWQ9ImcxNCI+PGcKICAgICAgICAgICBjbGlwLXBhdGg9InVybCgjY2xpcFBhdGgxOCkiCiAgICAgICAgICAgaWQ9ImcxNiI+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMTU0NCw1OTkuNDM0IGMgMC45MiwtNDAuMzUyIDI1LjY4LC04MS42MDIgNzEuNTMsLTgxLjYwMiAyNy41MSwwIDQ3LjY4LDEyLjgzMiA2MS40NCwzNS43NTQgMTIuODMsMjIuOTMgMTIuODMsNTYuODUyIDEyLjgzLDgyLjUyNyBsIDAsMzI5LjE4NCAtNzEuNTIsMCAwLDEwNC41NDMgMjY2LjgzLDAgMCwtMTA0LjU0MyAtNzAuNiwwIDAsLTM0NC43NyBjIDAsLTU4LjY5MSAtMy42OCwtMTA0LjUzMSAtNDQuOTMsLTE1Mi4yMTggLTM2LjY4LC00Mi4xOCAtOTYuMjgsLTY2LjAyIC0xNTMuMTQsLTY2LjAyIC0xMTcuMzcsMCAtMjA3LjI0LDc3Ljk0MSAtMjAyLjY0LDE5Ny4xNDUgbCAxMzAuMiwwIgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMjIiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDIzMDEuNCw2NjIuNjk1IGMgMCw4MC43MDMgLTY2Ljk0LDE0NS44MTMgLTE0Ny42MywxNDUuODEzIC04My40NCwwIC0xNDcuNjMsLTY4Ljc4MSAtMTQ3LjYzLC0xNTEuMzAxIDAsLTc5Ljc4NSA2Ni45NCwtMTQ1LjgwMSAxNDUuOCwtMTQ1LjgwMSA4NC4zNSwwIDE0OS40Niw2Ny44NTIgMTQ5LjQ2LDE1MS4yODkgeiBtIC0xLjgzLC0xODEuNTQ3IGMgLTM1Ljc3LC01NC4wOTcgLTkzLjUzLC03OC44NTkgLTE1Ny43MiwtNzguODU5IC0xNDAuMywwIC0yNTEuMjQsMTE2LjQ0OSAtMjUxLjI0LDI1NC45MTggMCwxNDIuMTI5IDExMy43LDI2MC40MSAyNTYuNzQsMjYwLjQxIDYzLjI3LDAgMTE4LjI5LC0yOS4zMzYgMTUyLjIyLC04Mi41MjMgbCAwLDY5LjY4NyAxNzUuMTQsMCAwLC0xMDQuNTI3IC02MS40NCwwIDAsLTI4MC41OTggNjEuNDQsMCAwLC0xMDQuNTI3IC0xNzUuMTQsMCAwLDY2LjAxOSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDI0IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSAyNjIyLjMzLDU1Ny4yNTggYyAzLjY3LC00NC4wMTYgMzMuMDEsLTczLjM0OCA3OC44NiwtNzMuMzQ4IDMzLjkzLDAgNjYuOTMsMjMuODI0IDY2LjkzLDYwLjUwNCAwLDQ4LjYwNiAtNDUuODQsNTYuODU2IC04My40NCw2Ni45NDEgLTg1LjI4LDIyLjAwNCAtMTc4LjgxLDQ4LjYwNiAtMTc4LjgxLDE1NS44NzkgMCw5My41MzYgNzguODYsMTQ3LjYzMyAxNjUuOTgsMTQ3LjYzMyA0NCwwIDgzLjQzLC05LjE3NiAxMTAuOTQsLTQ0LjAwOCBsIDAsMzMuOTIyIDgyLjUzLDAgMCwtMTMyLjk2NSAtMTA4LjIxLDAgYyAtMS44MywzNC44NTYgLTI4LjQyLDU3Ljc3NCAtNjMuMjYsNTcuNzc0IC0zMC4yNiwwIC02Mi4zNSwtMTcuNDIyIC02Mi4zNSwtNTEuMzQ4IDAsLTQ1Ljg0NyA0NC45MywtNTUuOTMgODAuNjksLTY0LjE4IDg4LjAyLC0yMC4xNzUgMTgyLjQ3LC00Ny42OTUgMTgyLjQ3LC0xNTcuNzM0IDAsLTk5LjAyNyAtODMuNDQsLTE1NC4wMzkgLTE3NS4xMywtMTU0LjAzOSAtNDkuNTMsMCAtOTQuNDYsMTUuNTgyIC0xMjYuNTUsNTMuMTggbCAwLC00MC4zNCAtODUuMjcsMCAwLDE0Mi4xMjkgMTE0LjYyLDAiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGgyNiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMjk4OC4xOCw4MDAuMjU0IC02My4yNiwwIDAsMTA0LjUyNyAxNjUuMDUsMCAwLC03My4zNTUgYyAzMS4xOCw1MS4zNDcgNzguODYsODUuMjc3IDE0MS4yMSw4NS4yNzcgNjcuODUsMCAxMjQuNzEsLTQxLjI1OCAxNTIuMjEsLTEwMi42OTkgMjYuNiw2Mi4zNTEgOTIuNjIsMTAyLjY5OSAxNjAuNDcsMTAyLjY5OSA1My4xOSwwIDEwNS40NiwtMjIgMTQxLjIxLC02Mi4zNTEgMzguNTIsLTQ0LjkzOCAzOC41MiwtOTMuNTMyIDM4LjUyLC0xNDkuNDU3IGwgMCwtMTg1LjIzOSA2My4yNywwIDAsLTEwNC41MjcgLTIzOC40MiwwIDAsMTA0LjUyNyA2My4yOCwwIDAsMTU3LjcxNSBjIDAsMzIuMTAyIDAsNjAuNTI3IC0xNC42Nyw4OC45NTcgLTE4LjM0LDI2LjU4MiAtNDguNjEsNDAuMzQ0IC03OS43Nyw0MC4zNDQgLTMwLjI2LDAgLTYzLjI4LC0xMi44NDQgLTgyLjUzLC0zNi42NzIgLTIyLjkzLC0yOS4zNTUgLTIyLjkzLC01Ni44NjMgLTIyLjkzLC05Mi42MjkgbCAwLC0xNTcuNzE1IDYzLjI3LDAgMCwtMTA0LjUyNyAtMjM4LjQxLDAgMCwxMDQuNTI3IDYzLjI4LDAgMCwxNTAuMzgzIGMgMCwyOS4zNDggMCw2Ni4wMjMgLTE0LjY3LDkxLjY5OSAtMTUuNTksMjkuMzM2IC00Ny42OSw0NC45MzQgLTgwLjcsNDQuOTM0IC0zMS4xOCwwIC01Ny43NywtMTEuMDA4IC03Ny45NCwtMzUuNzc0IC0yNC43NywtMzAuMjUzIC0yNi42LC02Mi4zNDMgLTI2LjYsLTk5Ljk0MSBsIDAsLTE1MS4zMDEgNjMuMjcsMCAwLC0xMDQuNTI3IC0yMzguNCwwIDAsMTA0LjUyNyA2My4yNiwwIDAsMjgwLjU5OCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDI4IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSAzOTk4LjY2LDk1MS41NDcgLTExMS44NywwIDAsMTE4LjI5MyAxMTEuODcsMCAwLC0xMTguMjkzIHogbSAwLC00MzEuODkxIDYzLjI3LDAgMCwtMTA0LjUyNyAtMjM5LjMzLDAgMCwxMDQuNTI3IDY0LjE5LDAgMCwyODAuNTk4IC02My4yNywwIDAsMTA0LjUyNyAxNzUuMTQsMCAwLC0zODUuMTI1IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzAiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDQxNTkuMTIsODAwLjI1NCAtNjMuMjcsMCAwLDEwNC41MjcgMTc1LjE0LDAgMCwtNjkuNjg3IGMgMjkuMzUsNTQuMTAxIDg0LjM2LDgwLjY5OSAxNDQuODcsODAuNjk5IDUzLjE5LDAgMTA1LjQ1LC0yMi4wMTYgMTQxLjIyLC02MC41MjcgNDAuMzQsLTQ0LjkzNCA0MS4yNiwtODguMDMyIDQxLjI2LC0xNDMuOTU3IGwgMCwtMTkxLjY1MyA2My4yNywwIDAsLTEwNC41MjcgLTIzOC40LDAgMCwxMDQuNTI3IDYzLjI2LDAgMCwxNTguNjM3IGMgMCwzMC4yNjIgMCw2MS40MzQgLTE5LjI2LDg4LjAzNSAtMjAuMTcsMjYuNTgyIC01My4xOCwzOS40MTQgLTg2LjE5LDM5LjQxNCAtMzMuOTMsMCAtNjguNzcsLTEzLjc1IC04OC45NCwtNDEuMjUgLTIxLjA5LC0yNy41IC0yMS4wOSwtNjkuNjg3IC0yMS4wOSwtMTAyLjcwNyBsIDAsLTE0Mi4xMjkgNjMuMjYsMCAwLC0xMDQuNTI3IC0yMzguNCwwIDAsMTA0LjUyNyA2My4yNywwIDAsMjgwLjU5OCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDMyIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA1MDgyLjQ4LDcwMy45NjUgYyAtMTkuMjQsNzAuNjA1IC04MS42LDExNS41NDcgLTE1NC4wNCwxMTUuNTQ3IC02Ni4wNCwwIC0xMjkuMywtNTEuMzQ4IC0xNDMuMDUsLTExNS41NDcgbCAyOTcuMDksMCB6IG0gODUuMjcsLTE0NC44ODMgYyAtMzguNTEsLTkzLjUyMyAtMTI5LjI3LC0xNTYuNzkzIC0yMzEuMDUsLTE1Ni43OTMgLTE0My4wNywwIC0yNTcuNjgsMTExLjg3MSAtMjU3LjY4LDI1NS44MzYgMCwxNDQuODgzIDEwOS4xMiwyNjEuMzI4IDI1NC45MSwyNjEuMzI4IDY3Ljg3LDAgMTM1LjcyLC0zMC4yNTggMTgzLjM5LC03OC44NjMgNDguNjIsLTUxLjM0NCA2OC43OSwtMTEzLjY5NSA2OC43OSwtMTgzLjM4MyBsIC0zLjY3LC0zOS40MzQgLTM5Ni4xMywwIGMgMTQuNjcsLTY3Ljg2MyA3Ny4wMywtMTE3LjM2MyAxNDYuNzIsLTExNy4zNjMgNDguNTksMCA5MC43NiwxOC4zMjggMTE4LjI4LDU4LjY3MiBsIDExNi40NCwwIgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzQiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDY5MC44OTUsODUwLjcwMyA5MC43NSwwIDIyLjU0MywzMS4wMzUgMCwyNDMuMTIyIC0xMzUuODI5LDAgMCwtMjQzLjE0MSAyMi41MzYsLTMxLjAxNiIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDM2IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA2MzIuMzk1LDc0Mi4yNTggMjguMDM5LDg2LjMwNCAtMjIuNTUxLDMxLjA0IC0yMzEuMjIzLDc1LjEyOCAtNDEuOTc2LC0xMjkuMTgzIDIzMS4yNTcsLTc1LjEzNyAzNi40NTQsMTEuODQ4IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzgiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDcxNy40NDksNjUzLjEwNSAtNzMuNDEsNTMuMzYgLTM2LjQ4OCwtMTEuODc1IC0xNDIuOTAzLC0xOTYuNjkyIDEwOS44ODMsLTc5LjgyOCAxNDIuOTE4LDE5Ni43MDMgMCwzOC4zMzIiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGg0MCIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gODI4LjUyLDcwNi40NjUgLTczLjQyNiwtNTMuMzQgMC4wMTEsLTM4LjM1OSBMIDg5OC4wMDQsNDE4LjA3IDEwMDcuOSw0OTcuODk4IDg2NC45NzMsNjk0LjYwOSA4MjguNTIsNzA2LjQ2NSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDQyIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA4MTIuMDg2LDgyOC41ODYgMjguMDU1LC04Ni4zMiAzNi40ODQsLTExLjgzNiAyMzEuMjI1LDc1LjExNyAtNDEuOTcsMTI5LjE4MyAtMjMxLjIzOSwtNzUuMTQgLTIyLjU1NSwtMzEuMDA0IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNDQiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDczNi4zMDEsMTMzNS44OCBjIC0zMjMuMDQ3LDAgLTU4NS44NzUsLTI2Mi43OCAtNTg1Ljg3NSwtNTg1Ljc4MiAwLC0zMjMuMTE4IDI2Mi44MjgsLTU4NS45NzcgNTg1Ljg3NSwtNTg1Ljk3NyAzMjMuMDE5LDAgNTg1LjgwOSwyNjIuODU5IDU4NS44MDksNTg1Ljk3NyAwLDMyMy4wMDIgLTI2Mi43OSw1ODUuNzgyIC01ODUuODA5LDU4NS43ODIgbCAwLDAgeiBtIDAsLTExOC42MSBjIDI1Ny45NzIsMCA0NjcuMTg5LC0yMDkuMTMgNDY3LjE4OSwtNDY3LjE3MiAwLC0yNTguMTI5IC0yMDkuMjE3LC00NjcuMzQ4IC00NjcuMTg5LC00NjcuMzQ4IC0yNTguMDc0LDAgLTQ2Ny4yNTQsMjA5LjIxOSAtNDY3LjI1NCw0NjcuMzQ4IDAsMjU4LjA0MiAyMDkuMTgsNDY3LjE3MiA0NjcuMjU0LDQ2Ny4xNzIiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGg0NiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMTA5MS4xMyw2MTkuODgzIC0xNzUuNzcxLDU3LjEyMSAxMS42MjksMzUuODA4IDE3NS43NjIsLTU3LjEyMSAtMTEuNjIsLTM1LjgwOCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDQ4IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0iTSA4NjYuOTU3LDkwMi4wNzQgODM2LjUsOTI0LjE5OSA5NDUuMTIxLDEwNzMuNzMgOTc1LjU4NiwxMDUxLjYxIDg2Ni45NTcsOTAyLjA3NCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDUwIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0iTSA2MDcuNDY1LDkwMy40NDUgNDk4Ljg1NSwxMDUyLjk3IDUyOS4zMiwxMDc1LjEgNjM3LjkzLDkyNS41NjYgNjA3LjQ2NSw5MDMuNDQ1IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNTIiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDM4MC42ODgsNjIyLjEyOSAtMTEuNjI2LDM1LjgwMSAxNzUuNzU4LDU3LjA5IDExLjYyMSwtMzUuODAxIC0xNzUuNzUzLC01Ny4wOSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDU0IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA3MTYuMjg5LDM3Ni41OSAzNy42NDA2LDAgMCwxODQuODE2IC0zNy42NDA2LDAgMCwtMTg0LjgxNiB6IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNTYiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjwvZz48L2c+PC9nPjwvZz48L3N2Zz4=') no-repeat, none; -webkit-background-size: 100%; -moz-background-size: 100%; -o-background-size: 100%; background-size: 100%; display: block; float: left; width: 90px; height: 25px; } +.jasmine_html-reporter .banner .version { margin-left: 14px; position: relative; top: 6px; } +.jasmine_html-reporter .banner .duration { position: absolute; right: 14px; top: 6px; } +.jasmine_html-reporter #jasmine_content { position: fixed; right: 100%; } +.jasmine_html-reporter .version { color: #aaaaaa; } +.jasmine_html-reporter .banner { margin-top: 14px; } +.jasmine_html-reporter .duration { color: #aaaaaa; float: right; } +.jasmine_html-reporter .symbol-summary { overflow: hidden; *zoom: 1; margin: 14px 0; } +.jasmine_html-reporter .symbol-summary li { display: inline-block; height: 8px; width: 14px; font-size: 16px; } +.jasmine_html-reporter .symbol-summary li.passed { font-size: 14px; } +.jasmine_html-reporter .symbol-summary li.passed:before { color: #007069; content: "\02022"; } +.jasmine_html-reporter .symbol-summary li.failed { line-height: 9px; } +.jasmine_html-reporter .symbol-summary li.failed:before { color: #ca3a11; content: "\d7"; font-weight: bold; margin-left: -1px; } +.jasmine_html-reporter .symbol-summary li.disabled { font-size: 14px; } +.jasmine_html-reporter .symbol-summary li.disabled:before { color: #bababa; content: "\02022"; } +.jasmine_html-reporter .symbol-summary li.pending { line-height: 17px; } +.jasmine_html-reporter .symbol-summary li.pending:before { color: #ba9d37; content: "*"; } +.jasmine_html-reporter .exceptions { color: #fff; float: right; margin-top: 5px; margin-right: 5px; } +.jasmine_html-reporter .bar { line-height: 28px; font-size: 14px; display: block; color: #eee; } +.jasmine_html-reporter .bar.failed { background-color: #ca3a11; } +.jasmine_html-reporter .bar.passed { background-color: #007069; } +.jasmine_html-reporter .bar.skipped { background-color: #bababa; } +.jasmine_html-reporter .bar.menu { background-color: #fff; color: #aaaaaa; } +.jasmine_html-reporter .bar.menu a { color: #333333; } +.jasmine_html-reporter .bar a { color: white; } +.jasmine_html-reporter.spec-list .bar.menu.failure-list, .jasmine_html-reporter.spec-list .results .failures { display: none; } +.jasmine_html-reporter.failure-list .bar.menu.spec-list, .jasmine_html-reporter.failure-list .summary { display: none; } +.jasmine_html-reporter .running-alert { background-color: #666666; } +.jasmine_html-reporter .results { margin-top: 14px; } +.jasmine_html-reporter.showDetails .summaryMenuItem { font-weight: normal; text-decoration: inherit; } +.jasmine_html-reporter.showDetails .summaryMenuItem:hover { text-decoration: underline; } +.jasmine_html-reporter.showDetails .detailsMenuItem { font-weight: bold; text-decoration: underline; } +.jasmine_html-reporter.showDetails .summary { display: none; } +.jasmine_html-reporter.showDetails #details { display: block; } +.jasmine_html-reporter .summaryMenuItem { font-weight: bold; text-decoration: underline; } +.jasmine_html-reporter .summary { margin-top: 14px; } +.jasmine_html-reporter .summary ul { list-style-type: none; margin-left: 14px; padding-top: 0; padding-left: 0; } +.jasmine_html-reporter .summary ul.suite { margin-top: 7px; margin-bottom: 7px; } +.jasmine_html-reporter .summary li.passed a { color: #007069; } +.jasmine_html-reporter .summary li.failed a { color: #ca3a11; } +.jasmine_html-reporter .summary li.empty a { color: #ba9d37; } +.jasmine_html-reporter .summary li.pending a { color: #ba9d37; } +.jasmine_html-reporter .description + .suite { margin-top: 0; } +.jasmine_html-reporter .suite { margin-top: 14px; } +.jasmine_html-reporter .suite a { color: #333333; } +.jasmine_html-reporter .failures .spec-detail { margin-bottom: 28px; } +.jasmine_html-reporter .failures .spec-detail .description { background-color: #ca3a11; } +.jasmine_html-reporter .failures .spec-detail .description a { color: white; } +.jasmine_html-reporter .result-message { padding-top: 14px; color: #333333; white-space: pre; } +.jasmine_html-reporter .result-message span.result { display: block; } +.jasmine_html-reporter .stack-trace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #666666; border: 1px solid #ddd; background: white; white-space: pre; } diff --git a/bonus/bdd/jasmine/lib/jasmine-2.0.1/jasmine.js b/bonus/bdd/jasmine/lib/jasmine-2.0.1/jasmine.js new file mode 100755 index 0000000..c943db1 --- /dev/null +++ b/bonus/bdd/jasmine/lib/jasmine-2.0.1/jasmine.js @@ -0,0 +1,2516 @@ +/* +Copyright (c) 2008-2014 Pivotal Labs + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +function getJasmineRequireObj() { + if (typeof module !== 'undefined' && module.exports) { + return exports; + } else { + window.jasmineRequire = window.jasmineRequire || {}; + return window.jasmineRequire; + } +} + +getJasmineRequireObj().core = function(jRequire) { + var j$ = {}; + + jRequire.base(j$); + j$.util = jRequire.util(); + j$.Any = jRequire.Any(); + j$.CallTracker = jRequire.CallTracker(); + j$.MockDate = jRequire.MockDate(); + j$.Clock = jRequire.Clock(); + j$.DelayedFunctionScheduler = jRequire.DelayedFunctionScheduler(); + j$.Env = jRequire.Env(j$); + j$.ExceptionFormatter = jRequire.ExceptionFormatter(); + j$.Expectation = jRequire.Expectation(); + j$.buildExpectationResult = jRequire.buildExpectationResult(); + j$.JsApiReporter = jRequire.JsApiReporter(); + j$.matchersUtil = jRequire.matchersUtil(j$); + j$.ObjectContaining = jRequire.ObjectContaining(j$); + j$.pp = jRequire.pp(j$); + j$.QueueRunner = jRequire.QueueRunner(j$); + j$.ReportDispatcher = jRequire.ReportDispatcher(); + j$.Spec = jRequire.Spec(j$); + j$.SpyStrategy = jRequire.SpyStrategy(); + j$.Suite = jRequire.Suite(); + j$.Timer = jRequire.Timer(); + j$.version = jRequire.version(); + + j$.matchers = jRequire.requireMatchers(jRequire, j$); + + return j$; +}; + +getJasmineRequireObj().requireMatchers = function(jRequire, j$) { + var availableMatchers = [ + 'toBe', + 'toBeCloseTo', + 'toBeDefined', + 'toBeFalsy', + 'toBeGreaterThan', + 'toBeLessThan', + 'toBeNaN', + 'toBeNull', + 'toBeTruthy', + 'toBeUndefined', + 'toContain', + 'toEqual', + 'toHaveBeenCalled', + 'toHaveBeenCalledWith', + 'toMatch', + 'toThrow', + 'toThrowError' + ], + matchers = {}; + + for (var i = 0; i < availableMatchers.length; i++) { + var name = availableMatchers[i]; + matchers[name] = jRequire[name](j$); + } + + return matchers; +}; + +getJasmineRequireObj().base = (function (jasmineGlobal) { + if (typeof module !== 'undefined' && module.exports) { + jasmineGlobal = global; + } + + return function(j$) { + j$.unimplementedMethod_ = function() { + throw new Error('unimplemented method'); + }; + + j$.MAX_PRETTY_PRINT_DEPTH = 40; + j$.MAX_PRETTY_PRINT_ARRAY_LENGTH = 100; + j$.DEFAULT_TIMEOUT_INTERVAL = 5000; + + j$.getGlobal = function() { + return jasmineGlobal; + }; + + j$.getEnv = function(options) { + var env = j$.currentEnv_ = j$.currentEnv_ || new j$.Env(options); + //jasmine. singletons in here (setTimeout blah blah). + return env; + }; + + j$.isArray_ = function(value) { + return j$.isA_('Array', value); + }; + + j$.isString_ = function(value) { + return j$.isA_('String', value); + }; + + j$.isNumber_ = function(value) { + return j$.isA_('Number', value); + }; + + j$.isA_ = function(typeName, value) { + return Object.prototype.toString.apply(value) === '[object ' + typeName + ']'; + }; + + j$.isDomNode = function(obj) { + return obj.nodeType > 0; + }; + + j$.any = function(clazz) { + return new j$.Any(clazz); + }; + + j$.objectContaining = function(sample) { + return new j$.ObjectContaining(sample); + }; + + j$.createSpy = function(name, originalFn) { + + var spyStrategy = new j$.SpyStrategy({ + name: name, + fn: originalFn, + getSpy: function() { return spy; } + }), + callTracker = new j$.CallTracker(), + spy = function() { + callTracker.track({ + object: this, + args: Array.prototype.slice.apply(arguments) + }); + return spyStrategy.exec.apply(this, arguments); + }; + + for (var prop in originalFn) { + if (prop === 'and' || prop === 'calls') { + throw new Error('Jasmine spies would overwrite the \'and\' and \'calls\' properties on the object being spied upon'); + } + + spy[prop] = originalFn[prop]; + } + + spy.and = spyStrategy; + spy.calls = callTracker; + + return spy; + }; + + j$.isSpy = function(putativeSpy) { + if (!putativeSpy) { + return false; + } + return putativeSpy.and instanceof j$.SpyStrategy && + putativeSpy.calls instanceof j$.CallTracker; + }; + + j$.createSpyObj = function(baseName, methodNames) { + if (!j$.isArray_(methodNames) || methodNames.length === 0) { + throw 'createSpyObj requires a non-empty array of method names to create spies for'; + } + var obj = {}; + for (var i = 0; i < methodNames.length; i++) { + obj[methodNames[i]] = j$.createSpy(baseName + '.' + methodNames[i]); + } + return obj; + }; + }; +})(this); + +getJasmineRequireObj().util = function() { + + var util = {}; + + util.inherit = function(childClass, parentClass) { + var Subclass = function() { + }; + Subclass.prototype = parentClass.prototype; + childClass.prototype = new Subclass(); + }; + + util.htmlEscape = function(str) { + if (!str) { + return str; + } + return str.replace(/&/g, '&') + .replace(//g, '>'); + }; + + util.argsToArray = function(args) { + var arrayOfArgs = []; + for (var i = 0; i < args.length; i++) { + arrayOfArgs.push(args[i]); + } + return arrayOfArgs; + }; + + util.isUndefined = function(obj) { + return obj === void 0; + }; + + util.arrayContains = function(array, search) { + var i = array.length; + while (i--) { + if (array[i] == search) { + return true; + } + } + return false; + }; + + return util; +}; + +getJasmineRequireObj().Spec = function(j$) { + function Spec(attrs) { + this.expectationFactory = attrs.expectationFactory; + this.resultCallback = attrs.resultCallback || function() {}; + this.id = attrs.id; + this.description = attrs.description || ''; + this.fn = attrs.fn; + this.beforeFns = attrs.beforeFns || function() { return []; }; + this.afterFns = attrs.afterFns || function() { return []; }; + this.onStart = attrs.onStart || function() {}; + this.exceptionFormatter = attrs.exceptionFormatter || function() {}; + this.getSpecName = attrs.getSpecName || function() { return ''; }; + this.expectationResultFactory = attrs.expectationResultFactory || function() { }; + this.queueRunnerFactory = attrs.queueRunnerFactory || function() {}; + this.catchingExceptions = attrs.catchingExceptions || function() { return true; }; + + if (!this.fn) { + this.pend(); + } + + this.result = { + id: this.id, + description: this.description, + fullName: this.getFullName(), + failedExpectations: [], + passedExpectations: [] + }; + } + + Spec.prototype.addExpectationResult = function(passed, data) { + var expectationResult = this.expectationResultFactory(data); + if (passed) { + this.result.passedExpectations.push(expectationResult); + } else { + this.result.failedExpectations.push(expectationResult); + } + }; + + Spec.prototype.expect = function(actual) { + return this.expectationFactory(actual, this); + }; + + Spec.prototype.execute = function(onComplete) { + var self = this; + + this.onStart(this); + + if (this.markedPending || this.disabled) { + complete(); + return; + } + + var allFns = this.beforeFns().concat(this.fn).concat(this.afterFns()); + + this.queueRunnerFactory({ + fns: allFns, + onException: onException, + onComplete: complete, + enforceTimeout: function() { return true; } + }); + + function onException(e) { + if (Spec.isPendingSpecException(e)) { + self.pend(); + return; + } + + self.addExpectationResult(false, { + matcherName: '', + passed: false, + expected: '', + actual: '', + error: e + }); + } + + function complete() { + self.result.status = self.status(); + self.resultCallback(self.result); + + if (onComplete) { + onComplete(); + } + } + }; + + Spec.prototype.disable = function() { + this.disabled = true; + }; + + Spec.prototype.pend = function() { + this.markedPending = true; + }; + + Spec.prototype.status = function() { + if (this.disabled) { + return 'disabled'; + } + + if (this.markedPending) { + return 'pending'; + } + + if (this.result.failedExpectations.length > 0) { + return 'failed'; + } else { + return 'passed'; + } + }; + + Spec.prototype.getFullName = function() { + return this.getSpecName(this); + }; + + Spec.pendingSpecExceptionMessage = '=> marked Pending'; + + Spec.isPendingSpecException = function(e) { + return !!(e && e.toString && e.toString().indexOf(Spec.pendingSpecExceptionMessage) !== -1); + }; + + return Spec; +}; + +if (typeof window == void 0 && typeof exports == 'object') { + exports.Spec = jasmineRequire.Spec; +} + +getJasmineRequireObj().Env = function(j$) { + function Env(options) { + options = options || {}; + + var self = this; + var global = options.global || j$.getGlobal(); + + var totalSpecsDefined = 0; + + var catchExceptions = true; + + var realSetTimeout = j$.getGlobal().setTimeout; + var realClearTimeout = j$.getGlobal().clearTimeout; + this.clock = new j$.Clock(global, new j$.DelayedFunctionScheduler(), new j$.MockDate(global)); + + var runnableLookupTable = {}; + + var spies = []; + + var currentSpec = null; + var currentSuite = null; + + var reporter = new j$.ReportDispatcher([ + 'jasmineStarted', + 'jasmineDone', + 'suiteStarted', + 'suiteDone', + 'specStarted', + 'specDone' + ]); + + this.specFilter = function() { + return true; + }; + + var equalityTesters = []; + + var customEqualityTesters = []; + this.addCustomEqualityTester = function(tester) { + customEqualityTesters.push(tester); + }; + + j$.Expectation.addCoreMatchers(j$.matchers); + + var nextSpecId = 0; + var getNextSpecId = function() { + return 'spec' + nextSpecId++; + }; + + var nextSuiteId = 0; + var getNextSuiteId = function() { + return 'suite' + nextSuiteId++; + }; + + var expectationFactory = function(actual, spec) { + return j$.Expectation.Factory({ + util: j$.matchersUtil, + customEqualityTesters: customEqualityTesters, + actual: actual, + addExpectationResult: addExpectationResult + }); + + function addExpectationResult(passed, result) { + return spec.addExpectationResult(passed, result); + } + }; + + var specStarted = function(spec) { + currentSpec = spec; + reporter.specStarted(spec.result); + }; + + var beforeFns = function(suite) { + return function() { + var befores = []; + while(suite) { + befores = befores.concat(suite.beforeFns); + suite = suite.parentSuite; + } + return befores.reverse(); + }; + }; + + var afterFns = function(suite) { + return function() { + var afters = []; + while(suite) { + afters = afters.concat(suite.afterFns); + suite = suite.parentSuite; + } + return afters; + }; + }; + + var getSpecName = function(spec, suite) { + return suite.getFullName() + ' ' + spec.description; + }; + + // TODO: we may just be able to pass in the fn instead of wrapping here + var buildExpectationResult = j$.buildExpectationResult, + exceptionFormatter = new j$.ExceptionFormatter(), + expectationResultFactory = function(attrs) { + attrs.messageFormatter = exceptionFormatter.message; + attrs.stackFormatter = exceptionFormatter.stack; + + return buildExpectationResult(attrs); + }; + + // TODO: fix this naming, and here's where the value comes in + this.catchExceptions = function(value) { + catchExceptions = !!value; + return catchExceptions; + }; + + this.catchingExceptions = function() { + return catchExceptions; + }; + + var maximumSpecCallbackDepth = 20; + var currentSpecCallbackDepth = 0; + + function clearStack(fn) { + currentSpecCallbackDepth++; + if (currentSpecCallbackDepth >= maximumSpecCallbackDepth) { + currentSpecCallbackDepth = 0; + realSetTimeout(fn, 0); + } else { + fn(); + } + } + + var catchException = function(e) { + return j$.Spec.isPendingSpecException(e) || catchExceptions; + }; + + var queueRunnerFactory = function(options) { + options.catchException = catchException; + options.clearStack = options.clearStack || clearStack; + options.timer = {setTimeout: realSetTimeout, clearTimeout: realClearTimeout}; + + new j$.QueueRunner(options).execute(); + }; + + var topSuite = new j$.Suite({ + env: this, + id: getNextSuiteId(), + description: 'Jasmine__TopLevel__Suite', + queueRunner: queueRunnerFactory, + resultCallback: function() {} // TODO - hook this up + }); + runnableLookupTable[topSuite.id] = topSuite; + currentSuite = topSuite; + + this.topSuite = function() { + return topSuite; + }; + + this.execute = function(runnablesToRun) { + runnablesToRun = runnablesToRun || [topSuite.id]; + + var allFns = []; + for(var i = 0; i < runnablesToRun.length; i++) { + var runnable = runnableLookupTable[runnablesToRun[i]]; + allFns.push((function(runnable) { return function(done) { runnable.execute(done); }; })(runnable)); + } + + reporter.jasmineStarted({ + totalSpecsDefined: totalSpecsDefined + }); + + queueRunnerFactory({fns: allFns, onComplete: reporter.jasmineDone}); + }; + + this.addReporter = function(reporterToAdd) { + reporter.addReporter(reporterToAdd); + }; + + this.addMatchers = function(matchersToAdd) { + j$.Expectation.addMatchers(matchersToAdd); + }; + + this.spyOn = function(obj, methodName) { + if (j$.util.isUndefined(obj)) { + throw new Error('spyOn could not find an object to spy upon for ' + methodName + '()'); + } + + if (j$.util.isUndefined(obj[methodName])) { + throw new Error(methodName + '() method does not exist'); + } + + if (obj[methodName] && j$.isSpy(obj[methodName])) { + //TODO?: should this return the current spy? Downside: may cause user confusion about spy state + throw new Error(methodName + ' has already been spied upon'); + } + + var spy = j$.createSpy(methodName, obj[methodName]); + + spies.push({ + spy: spy, + baseObj: obj, + methodName: methodName, + originalValue: obj[methodName] + }); + + obj[methodName] = spy; + + return spy; + }; + + var suiteFactory = function(description) { + var suite = new j$.Suite({ + env: self, + id: getNextSuiteId(), + description: description, + parentSuite: currentSuite, + queueRunner: queueRunnerFactory, + onStart: suiteStarted, + resultCallback: function(attrs) { + reporter.suiteDone(attrs); + } + }); + + runnableLookupTable[suite.id] = suite; + return suite; + }; + + this.describe = function(description, specDefinitions) { + var suite = suiteFactory(description); + + var parentSuite = currentSuite; + parentSuite.addChild(suite); + currentSuite = suite; + + var declarationError = null; + try { + specDefinitions.call(suite); + } catch (e) { + declarationError = e; + } + + if (declarationError) { + this.it('encountered a declaration exception', function() { + throw declarationError; + }); + } + + currentSuite = parentSuite; + + return suite; + }; + + this.xdescribe = function(description, specDefinitions) { + var suite = this.describe(description, specDefinitions); + suite.disable(); + return suite; + }; + + var specFactory = function(description, fn, suite) { + totalSpecsDefined++; + + var spec = new j$.Spec({ + id: getNextSpecId(), + beforeFns: beforeFns(suite), + afterFns: afterFns(suite), + expectationFactory: expectationFactory, + exceptionFormatter: exceptionFormatter, + resultCallback: specResultCallback, + getSpecName: function(spec) { + return getSpecName(spec, suite); + }, + onStart: specStarted, + description: description, + expectationResultFactory: expectationResultFactory, + queueRunnerFactory: queueRunnerFactory, + fn: fn + }); + + runnableLookupTable[spec.id] = spec; + + if (!self.specFilter(spec)) { + spec.disable(); + } + + return spec; + + function removeAllSpies() { + for (var i = 0; i < spies.length; i++) { + var spyEntry = spies[i]; + spyEntry.baseObj[spyEntry.methodName] = spyEntry.originalValue; + } + spies = []; + } + + function specResultCallback(result) { + removeAllSpies(); + j$.Expectation.resetMatchers(); + customEqualityTesters = []; + currentSpec = null; + reporter.specDone(result); + } + }; + + var suiteStarted = function(suite) { + reporter.suiteStarted(suite.result); + }; + + this.it = function(description, fn) { + var spec = specFactory(description, fn, currentSuite); + currentSuite.addChild(spec); + return spec; + }; + + this.xit = function(description, fn) { + var spec = this.it(description, fn); + spec.pend(); + return spec; + }; + + this.expect = function(actual) { + if (!currentSpec) { + throw new Error('\'expect\' was used when there was no current spec, this could be because an asynchronous test timed out'); + } + + return currentSpec.expect(actual); + }; + + this.beforeEach = function(beforeEachFunction) { + currentSuite.beforeEach(beforeEachFunction); + }; + + this.afterEach = function(afterEachFunction) { + currentSuite.afterEach(afterEachFunction); + }; + + this.pending = function() { + throw j$.Spec.pendingSpecExceptionMessage; + }; + } + + return Env; +}; + +getJasmineRequireObj().JsApiReporter = function() { + + var noopTimer = { + start: function(){}, + elapsed: function(){ return 0; } + }; + + function JsApiReporter(options) { + var timer = options.timer || noopTimer, + status = 'loaded'; + + this.started = false; + this.finished = false; + + this.jasmineStarted = function() { + this.started = true; + status = 'started'; + timer.start(); + }; + + var executionTime; + + this.jasmineDone = function() { + this.finished = true; + executionTime = timer.elapsed(); + status = 'done'; + }; + + this.status = function() { + return status; + }; + + var suites = {}; + + this.suiteStarted = function(result) { + storeSuite(result); + }; + + this.suiteDone = function(result) { + storeSuite(result); + }; + + function storeSuite(result) { + suites[result.id] = result; + } + + this.suites = function() { + return suites; + }; + + var specs = []; + this.specStarted = function(result) { }; + + this.specDone = function(result) { + specs.push(result); + }; + + this.specResults = function(index, length) { + return specs.slice(index, index + length); + }; + + this.specs = function() { + return specs; + }; + + this.executionTime = function() { + return executionTime; + }; + + } + + return JsApiReporter; +}; + +getJasmineRequireObj().Any = function() { + + function Any(expectedObject) { + this.expectedObject = expectedObject; + } + + Any.prototype.jasmineMatches = function(other) { + if (this.expectedObject == String) { + return typeof other == 'string' || other instanceof String; + } + + if (this.expectedObject == Number) { + return typeof other == 'number' || other instanceof Number; + } + + if (this.expectedObject == Function) { + return typeof other == 'function' || other instanceof Function; + } + + if (this.expectedObject == Object) { + return typeof other == 'object'; + } + + if (this.expectedObject == Boolean) { + return typeof other == 'boolean'; + } + + return other instanceof this.expectedObject; + }; + + Any.prototype.jasmineToString = function() { + return ''; + }; + + return Any; +}; + +getJasmineRequireObj().CallTracker = function() { + + function CallTracker() { + var calls = []; + + this.track = function(context) { + calls.push(context); + }; + + this.any = function() { + return !!calls.length; + }; + + this.count = function() { + return calls.length; + }; + + this.argsFor = function(index) { + var call = calls[index]; + return call ? call.args : []; + }; + + this.all = function() { + return calls; + }; + + this.allArgs = function() { + var callArgs = []; + for(var i = 0; i < calls.length; i++){ + callArgs.push(calls[i].args); + } + + return callArgs; + }; + + this.first = function() { + return calls[0]; + }; + + this.mostRecent = function() { + return calls[calls.length - 1]; + }; + + this.reset = function() { + calls = []; + }; + } + + return CallTracker; +}; + +getJasmineRequireObj().Clock = function() { + function Clock(global, delayedFunctionScheduler, mockDate) { + var self = this, + realTimingFunctions = { + setTimeout: global.setTimeout, + clearTimeout: global.clearTimeout, + setInterval: global.setInterval, + clearInterval: global.clearInterval + }, + fakeTimingFunctions = { + setTimeout: setTimeout, + clearTimeout: clearTimeout, + setInterval: setInterval, + clearInterval: clearInterval + }, + installed = false, + timer; + + + self.install = function() { + replace(global, fakeTimingFunctions); + timer = fakeTimingFunctions; + installed = true; + + return self; + }; + + self.uninstall = function() { + delayedFunctionScheduler.reset(); + mockDate.uninstall(); + replace(global, realTimingFunctions); + + timer = realTimingFunctions; + installed = false; + }; + + self.mockDate = function(initialDate) { + mockDate.install(initialDate); + }; + + self.setTimeout = function(fn, delay, params) { + if (legacyIE()) { + if (arguments.length > 2) { + throw new Error('IE < 9 cannot support extra params to setTimeout without a polyfill'); + } + return timer.setTimeout(fn, delay); + } + return Function.prototype.apply.apply(timer.setTimeout, [global, arguments]); + }; + + self.setInterval = function(fn, delay, params) { + if (legacyIE()) { + if (arguments.length > 2) { + throw new Error('IE < 9 cannot support extra params to setInterval without a polyfill'); + } + return timer.setInterval(fn, delay); + } + return Function.prototype.apply.apply(timer.setInterval, [global, arguments]); + }; + + self.clearTimeout = function(id) { + return Function.prototype.call.apply(timer.clearTimeout, [global, id]); + }; + + self.clearInterval = function(id) { + return Function.prototype.call.apply(timer.clearInterval, [global, id]); + }; + + self.tick = function(millis) { + if (installed) { + mockDate.tick(millis); + delayedFunctionScheduler.tick(millis); + } else { + throw new Error('Mock clock is not installed, use jasmine.clock().install()'); + } + }; + + return self; + + function legacyIE() { + //if these methods are polyfilled, apply will be present + return !(realTimingFunctions.setTimeout || realTimingFunctions.setInterval).apply; + } + + function replace(dest, source) { + for (var prop in source) { + dest[prop] = source[prop]; + } + } + + function setTimeout(fn, delay) { + return delayedFunctionScheduler.scheduleFunction(fn, delay, argSlice(arguments, 2)); + } + + function clearTimeout(id) { + return delayedFunctionScheduler.removeFunctionWithId(id); + } + + function setInterval(fn, interval) { + return delayedFunctionScheduler.scheduleFunction(fn, interval, argSlice(arguments, 2), true); + } + + function clearInterval(id) { + return delayedFunctionScheduler.removeFunctionWithId(id); + } + + function argSlice(argsObj, n) { + return Array.prototype.slice.call(argsObj, n); + } + } + + return Clock; +}; + +getJasmineRequireObj().DelayedFunctionScheduler = function() { + function DelayedFunctionScheduler() { + var self = this; + var scheduledLookup = []; + var scheduledFunctions = {}; + var currentTime = 0; + var delayedFnCount = 0; + + self.tick = function(millis) { + millis = millis || 0; + var endTime = currentTime + millis; + + runScheduledFunctions(endTime); + currentTime = endTime; + }; + + self.scheduleFunction = function(funcToCall, millis, params, recurring, timeoutKey, runAtMillis) { + var f; + if (typeof(funcToCall) === 'string') { + /* jshint evil: true */ + f = function() { return eval(funcToCall); }; + /* jshint evil: false */ + } else { + f = funcToCall; + } + + millis = millis || 0; + timeoutKey = timeoutKey || ++delayedFnCount; + runAtMillis = runAtMillis || (currentTime + millis); + + var funcToSchedule = { + runAtMillis: runAtMillis, + funcToCall: f, + recurring: recurring, + params: params, + timeoutKey: timeoutKey, + millis: millis + }; + + if (runAtMillis in scheduledFunctions) { + scheduledFunctions[runAtMillis].push(funcToSchedule); + } else { + scheduledFunctions[runAtMillis] = [funcToSchedule]; + scheduledLookup.push(runAtMillis); + scheduledLookup.sort(function (a, b) { + return a - b; + }); + } + + return timeoutKey; + }; + + self.removeFunctionWithId = function(timeoutKey) { + for (var runAtMillis in scheduledFunctions) { + var funcs = scheduledFunctions[runAtMillis]; + var i = indexOfFirstToPass(funcs, function (func) { + return func.timeoutKey === timeoutKey; + }); + + if (i > -1) { + if (funcs.length === 1) { + delete scheduledFunctions[runAtMillis]; + deleteFromLookup(runAtMillis); + } else { + funcs.splice(i, 1); + } + + // intervals get rescheduled when executed, so there's never more + // than a single scheduled function with a given timeoutKey + break; + } + } + }; + + self.reset = function() { + currentTime = 0; + scheduledLookup = []; + scheduledFunctions = {}; + delayedFnCount = 0; + }; + + return self; + + function indexOfFirstToPass(array, testFn) { + var index = -1; + + for (var i = 0; i < array.length; ++i) { + if (testFn(array[i])) { + index = i; + break; + } + } + + return index; + } + + function deleteFromLookup(key) { + var value = Number(key); + var i = indexOfFirstToPass(scheduledLookup, function (millis) { + return millis === value; + }); + + if (i > -1) { + scheduledLookup.splice(i, 1); + } + } + + function reschedule(scheduledFn) { + self.scheduleFunction(scheduledFn.funcToCall, + scheduledFn.millis, + scheduledFn.params, + true, + scheduledFn.timeoutKey, + scheduledFn.runAtMillis + scheduledFn.millis); + } + + function runScheduledFunctions(endTime) { + if (scheduledLookup.length === 0 || scheduledLookup[0] > endTime) { + return; + } + + do { + currentTime = scheduledLookup.shift(); + + var funcsToRun = scheduledFunctions[currentTime]; + delete scheduledFunctions[currentTime]; + + for (var i = 0; i < funcsToRun.length; ++i) { + var funcToRun = funcsToRun[i]; + funcToRun.funcToCall.apply(null, funcToRun.params || []); + + if (funcToRun.recurring) { + reschedule(funcToRun); + } + } + } while (scheduledLookup.length > 0 && + // checking first if we're out of time prevents setTimeout(0) + // scheduled in a funcToRun from forcing an extra iteration + currentTime !== endTime && + scheduledLookup[0] <= endTime); + } + } + + return DelayedFunctionScheduler; +}; + +getJasmineRequireObj().ExceptionFormatter = function() { + function ExceptionFormatter() { + this.message = function(error) { + var message = ''; + + if (error.name && error.message) { + message += error.name + ': ' + error.message; + } else { + message += error.toString() + ' thrown'; + } + + if (error.fileName || error.sourceURL) { + message += ' in ' + (error.fileName || error.sourceURL); + } + + if (error.line || error.lineNumber) { + message += ' (line ' + (error.line || error.lineNumber) + ')'; + } + + return message; + }; + + this.stack = function(error) { + return error ? error.stack : null; + }; + } + + return ExceptionFormatter; +}; + +getJasmineRequireObj().Expectation = function() { + + var matchers = {}; + + function Expectation(options) { + this.util = options.util || { buildFailureMessage: function() {} }; + this.customEqualityTesters = options.customEqualityTesters || []; + this.actual = options.actual; + this.addExpectationResult = options.addExpectationResult || function(){}; + this.isNot = options.isNot; + + for (var matcherName in matchers) { + this[matcherName] = matchers[matcherName]; + } + } + + Expectation.prototype.wrapCompare = function(name, matcherFactory) { + return function() { + var args = Array.prototype.slice.call(arguments, 0), + expected = args.slice(0), + message = ''; + + args.unshift(this.actual); + + var matcher = matcherFactory(this.util, this.customEqualityTesters), + matcherCompare = matcher.compare; + + function defaultNegativeCompare() { + var result = matcher.compare.apply(null, args); + result.pass = !result.pass; + return result; + } + + if (this.isNot) { + matcherCompare = matcher.negativeCompare || defaultNegativeCompare; + } + + var result = matcherCompare.apply(null, args); + + if (!result.pass) { + if (!result.message) { + args.unshift(this.isNot); + args.unshift(name); + message = this.util.buildFailureMessage.apply(null, args); + } else { + if (Object.prototype.toString.apply(result.message) === '[object Function]') { + message = result.message(); + } else { + message = result.message; + } + } + } + + if (expected.length == 1) { + expected = expected[0]; + } + + // TODO: how many of these params are needed? + this.addExpectationResult( + result.pass, + { + matcherName: name, + passed: result.pass, + message: message, + actual: this.actual, + expected: expected // TODO: this may need to be arrayified/sliced + } + ); + }; + }; + + Expectation.addCoreMatchers = function(matchers) { + var prototype = Expectation.prototype; + for (var matcherName in matchers) { + var matcher = matchers[matcherName]; + prototype[matcherName] = prototype.wrapCompare(matcherName, matcher); + } + }; + + Expectation.addMatchers = function(matchersToAdd) { + for (var name in matchersToAdd) { + var matcher = matchersToAdd[name]; + matchers[name] = Expectation.prototype.wrapCompare(name, matcher); + } + }; + + Expectation.resetMatchers = function() { + for (var name in matchers) { + delete matchers[name]; + } + }; + + Expectation.Factory = function(options) { + options = options || {}; + + var expect = new Expectation(options); + + // TODO: this would be nice as its own Object - NegativeExpectation + // TODO: copy instead of mutate options + options.isNot = true; + expect.not = new Expectation(options); + + return expect; + }; + + return Expectation; +}; + +//TODO: expectation result may make more sense as a presentation of an expectation. +getJasmineRequireObj().buildExpectationResult = function() { + function buildExpectationResult(options) { + var messageFormatter = options.messageFormatter || function() {}, + stackFormatter = options.stackFormatter || function() {}; + + return { + matcherName: options.matcherName, + expected: options.expected, + actual: options.actual, + message: message(), + stack: stack(), + passed: options.passed + }; + + function message() { + if (options.passed) { + return 'Passed.'; + } else if (options.message) { + return options.message; + } else if (options.error) { + return messageFormatter(options.error); + } + return ''; + } + + function stack() { + if (options.passed) { + return ''; + } + + var error = options.error; + if (!error) { + try { + throw new Error(message()); + } catch (e) { + error = e; + } + } + return stackFormatter(error); + } + } + + return buildExpectationResult; +}; + +getJasmineRequireObj().MockDate = function() { + function MockDate(global) { + var self = this; + var currentTime = 0; + + if (!global || !global.Date) { + self.install = function() {}; + self.tick = function() {}; + self.uninstall = function() {}; + return self; + } + + var GlobalDate = global.Date; + + self.install = function(mockDate) { + if (mockDate instanceof GlobalDate) { + currentTime = mockDate.getTime(); + } else { + currentTime = new GlobalDate().getTime(); + } + + global.Date = FakeDate; + }; + + self.tick = function(millis) { + millis = millis || 0; + currentTime = currentTime + millis; + }; + + self.uninstall = function() { + currentTime = 0; + global.Date = GlobalDate; + }; + + createDateProperties(); + + return self; + + function FakeDate() { + if (arguments.length === 0) { + return new GlobalDate(currentTime); + } else { + return new GlobalDate(arguments[0], arguments[1], arguments[2], + arguments[3], arguments[4], arguments[5], arguments[6]); + } + } + + function createDateProperties() { + + FakeDate.now = function() { + if (GlobalDate.now) { + return currentTime; + } else { + throw new Error('Browser does not support Date.now()'); + } + }; + + FakeDate.toSource = GlobalDate.toSource; + FakeDate.toString = GlobalDate.toString; + FakeDate.parse = GlobalDate.parse; + FakeDate.UTC = GlobalDate.UTC; + } + } + + return MockDate; +}; + +getJasmineRequireObj().ObjectContaining = function(j$) { + + function ObjectContaining(sample) { + this.sample = sample; + } + + ObjectContaining.prototype.jasmineMatches = function(other, mismatchKeys, mismatchValues) { + if (typeof(this.sample) !== 'object') { throw new Error('You must provide an object to objectContaining, not \''+this.sample+'\'.'); } + + mismatchKeys = mismatchKeys || []; + mismatchValues = mismatchValues || []; + + var hasKey = function(obj, keyName) { + return obj !== null && !j$.util.isUndefined(obj[keyName]); + }; + + for (var property in this.sample) { + if (!hasKey(other, property) && hasKey(this.sample, property)) { + mismatchKeys.push('expected has key \'' + property + '\', but missing from actual.'); + } + else if (!j$.matchersUtil.equals(other[property], this.sample[property])) { + mismatchValues.push('\'' + property + '\' was \'' + (other[property] ? j$.util.htmlEscape(other[property].toString()) : other[property]) + '\' in actual, but was \'' + (this.sample[property] ? j$.util.htmlEscape(this.sample[property].toString()) : this.sample[property]) + '\' in expected.'); + } + } + + return (mismatchKeys.length === 0 && mismatchValues.length === 0); + }; + + ObjectContaining.prototype.jasmineToString = function() { + return ''; + }; + + return ObjectContaining; +}; + +getJasmineRequireObj().pp = function(j$) { + + function PrettyPrinter() { + this.ppNestLevel_ = 0; + this.seen = []; + } + + PrettyPrinter.prototype.format = function(value) { + this.ppNestLevel_++; + try { + if (j$.util.isUndefined(value)) { + this.emitScalar('undefined'); + } else if (value === null) { + this.emitScalar('null'); + } else if (value === 0 && 1/value === -Infinity) { + this.emitScalar('-0'); + } else if (value === j$.getGlobal()) { + this.emitScalar(''); + } else if (value.jasmineToString) { + this.emitScalar(value.jasmineToString()); + } else if (typeof value === 'string') { + this.emitString(value); + } else if (j$.isSpy(value)) { + this.emitScalar('spy on ' + value.and.identity()); + } else if (value instanceof RegExp) { + this.emitScalar(value.toString()); + } else if (typeof value === 'function') { + this.emitScalar('Function'); + } else if (typeof value.nodeType === 'number') { + this.emitScalar('HTMLNode'); + } else if (value instanceof Date) { + this.emitScalar('Date(' + value + ')'); + } else if (j$.util.arrayContains(this.seen, value)) { + this.emitScalar(''); + } else if (j$.isArray_(value) || j$.isA_('Object', value)) { + this.seen.push(value); + if (j$.isArray_(value)) { + this.emitArray(value); + } else { + this.emitObject(value); + } + this.seen.pop(); + } else { + this.emitScalar(value.toString()); + } + } finally { + this.ppNestLevel_--; + } + }; + + PrettyPrinter.prototype.iterateObject = function(obj, fn) { + for (var property in obj) { + if (!Object.prototype.hasOwnProperty.call(obj, property)) { continue; } + fn(property, obj.__lookupGetter__ ? (!j$.util.isUndefined(obj.__lookupGetter__(property)) && + obj.__lookupGetter__(property) !== null) : false); + } + }; + + PrettyPrinter.prototype.emitArray = j$.unimplementedMethod_; + PrettyPrinter.prototype.emitObject = j$.unimplementedMethod_; + PrettyPrinter.prototype.emitScalar = j$.unimplementedMethod_; + PrettyPrinter.prototype.emitString = j$.unimplementedMethod_; + + function StringPrettyPrinter() { + PrettyPrinter.call(this); + + this.string = ''; + } + + j$.util.inherit(StringPrettyPrinter, PrettyPrinter); + + StringPrettyPrinter.prototype.emitScalar = function(value) { + this.append(value); + }; + + StringPrettyPrinter.prototype.emitString = function(value) { + this.append('\'' + value + '\''); + }; + + StringPrettyPrinter.prototype.emitArray = function(array) { + if (this.ppNestLevel_ > j$.MAX_PRETTY_PRINT_DEPTH) { + this.append('Array'); + return; + } + var length = Math.min(array.length, j$.MAX_PRETTY_PRINT_ARRAY_LENGTH); + this.append('[ '); + for (var i = 0; i < length; i++) { + if (i > 0) { + this.append(', '); + } + this.format(array[i]); + } + if(array.length > length){ + this.append(', ...'); + } + this.append(' ]'); + }; + + StringPrettyPrinter.prototype.emitObject = function(obj) { + if (this.ppNestLevel_ > j$.MAX_PRETTY_PRINT_DEPTH) { + this.append('Object'); + return; + } + + var self = this; + this.append('{ '); + var first = true; + + this.iterateObject(obj, function(property, isGetter) { + if (first) { + first = false; + } else { + self.append(', '); + } + + self.append(property); + self.append(': '); + if (isGetter) { + self.append(''); + } else { + self.format(obj[property]); + } + }); + + this.append(' }'); + }; + + StringPrettyPrinter.prototype.append = function(value) { + this.string += value; + }; + + return function(value) { + var stringPrettyPrinter = new StringPrettyPrinter(); + stringPrettyPrinter.format(value); + return stringPrettyPrinter.string; + }; +}; + +getJasmineRequireObj().QueueRunner = function(j$) { + + function once(fn) { + var called = false; + return function() { + if (!called) { + called = true; + fn(); + } + }; + } + + function QueueRunner(attrs) { + this.fns = attrs.fns || []; + this.onComplete = attrs.onComplete || function() {}; + this.clearStack = attrs.clearStack || function(fn) {fn();}; + this.onException = attrs.onException || function() {}; + this.catchException = attrs.catchException || function() { return true; }; + this.enforceTimeout = attrs.enforceTimeout || function() { return false; }; + this.userContext = {}; + this.timer = attrs.timeout || {setTimeout: setTimeout, clearTimeout: clearTimeout}; + } + + QueueRunner.prototype.execute = function() { + this.run(this.fns, 0); + }; + + QueueRunner.prototype.run = function(fns, recursiveIndex) { + var length = fns.length, + self = this, + iterativeIndex; + + for(iterativeIndex = recursiveIndex; iterativeIndex < length; iterativeIndex++) { + var fn = fns[iterativeIndex]; + if (fn.length > 0) { + return attemptAsync(fn); + } else { + attemptSync(fn); + } + } + + var runnerDone = iterativeIndex >= length; + + if (runnerDone) { + this.clearStack(this.onComplete); + } + + function attemptSync(fn) { + try { + fn.call(self.userContext); + } catch (e) { + handleException(e); + } + } + + function attemptAsync(fn) { + var clearTimeout = function () { + Function.prototype.apply.apply(self.timer.clearTimeout, [j$.getGlobal(), [timeoutId]]); + }, + next = once(function () { + clearTimeout(timeoutId); + self.run(fns, iterativeIndex + 1); + }), + timeoutId; + + if (self.enforceTimeout()) { + timeoutId = Function.prototype.apply.apply(self.timer.setTimeout, [j$.getGlobal(), [function() { + self.onException(new Error('Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.')); + next(); + }, j$.DEFAULT_TIMEOUT_INTERVAL]]); + } + + try { + fn.call(self.userContext, next); + } catch (e) { + handleException(e); + next(); + } + } + + function handleException(e) { + self.onException(e); + if (!self.catchException(e)) { + //TODO: set a var when we catch an exception and + //use a finally block to close the loop in a nice way.. + throw e; + } + } + }; + + return QueueRunner; +}; + +getJasmineRequireObj().ReportDispatcher = function() { + function ReportDispatcher(methods) { + + var dispatchedMethods = methods || []; + + for (var i = 0; i < dispatchedMethods.length; i++) { + var method = dispatchedMethods[i]; + this[method] = (function(m) { + return function() { + dispatch(m, arguments); + }; + }(method)); + } + + var reporters = []; + + this.addReporter = function(reporter) { + reporters.push(reporter); + }; + + return this; + + function dispatch(method, args) { + for (var i = 0; i < reporters.length; i++) { + var reporter = reporters[i]; + if (reporter[method]) { + reporter[method].apply(reporter, args); + } + } + } + } + + return ReportDispatcher; +}; + + +getJasmineRequireObj().SpyStrategy = function() { + + function SpyStrategy(options) { + options = options || {}; + + var identity = options.name || 'unknown', + originalFn = options.fn || function() {}, + getSpy = options.getSpy || function() {}, + plan = function() {}; + + this.identity = function() { + return identity; + }; + + this.exec = function() { + return plan.apply(this, arguments); + }; + + this.callThrough = function() { + plan = originalFn; + return getSpy(); + }; + + this.returnValue = function(value) { + plan = function() { + return value; + }; + return getSpy(); + }; + + this.throwError = function(something) { + var error = (something instanceof Error) ? something : new Error(something); + plan = function() { + throw error; + }; + return getSpy(); + }; + + this.callFake = function(fn) { + plan = fn; + return getSpy(); + }; + + this.stub = function(fn) { + plan = function() {}; + return getSpy(); + }; + } + + return SpyStrategy; +}; + +getJasmineRequireObj().Suite = function() { + function Suite(attrs) { + this.env = attrs.env; + this.id = attrs.id; + this.parentSuite = attrs.parentSuite; + this.description = attrs.description; + this.onStart = attrs.onStart || function() {}; + this.resultCallback = attrs.resultCallback || function() {}; + this.clearStack = attrs.clearStack || function(fn) {fn();}; + + this.beforeFns = []; + this.afterFns = []; + this.queueRunner = attrs.queueRunner || function() {}; + this.disabled = false; + + this.children = []; + + this.result = { + id: this.id, + status: this.disabled ? 'disabled' : '', + description: this.description, + fullName: this.getFullName() + }; + } + + Suite.prototype.getFullName = function() { + var fullName = this.description; + for (var parentSuite = this.parentSuite; parentSuite; parentSuite = parentSuite.parentSuite) { + if (parentSuite.parentSuite) { + fullName = parentSuite.description + ' ' + fullName; + } + } + return fullName; + }; + + Suite.prototype.disable = function() { + this.disabled = true; + }; + + Suite.prototype.beforeEach = function(fn) { + this.beforeFns.unshift(fn); + }; + + Suite.prototype.afterEach = function(fn) { + this.afterFns.unshift(fn); + }; + + Suite.prototype.addChild = function(child) { + this.children.push(child); + }; + + Suite.prototype.execute = function(onComplete) { + var self = this; + if (this.disabled) { + complete(); + return; + } + + var allFns = []; + + for (var i = 0; i < this.children.length; i++) { + allFns.push(wrapChildAsAsync(this.children[i])); + } + + this.onStart(this); + + this.queueRunner({ + fns: allFns, + onComplete: complete + }); + + function complete() { + self.resultCallback(self.result); + + if (onComplete) { + onComplete(); + } + } + + function wrapChildAsAsync(child) { + return function(done) { child.execute(done); }; + } + }; + + return Suite; +}; + +if (typeof window == void 0 && typeof exports == 'object') { + exports.Suite = jasmineRequire.Suite; +} + +getJasmineRequireObj().Timer = function() { + var defaultNow = (function(Date) { + return function() { return new Date().getTime(); }; + })(Date); + + function Timer(options) { + options = options || {}; + + var now = options.now || defaultNow, + startTime; + + this.start = function() { + startTime = now(); + }; + + this.elapsed = function() { + return now() - startTime; + }; + } + + return Timer; +}; + +getJasmineRequireObj().matchersUtil = function(j$) { + // TODO: what to do about jasmine.pp not being inject? move to JSON.stringify? gut PrettyPrinter? + + return { + equals: function(a, b, customTesters) { + customTesters = customTesters || []; + + return eq(a, b, [], [], customTesters); + }, + + contains: function(haystack, needle, customTesters) { + customTesters = customTesters || []; + + if (Object.prototype.toString.apply(haystack) === '[object Array]') { + for (var i = 0; i < haystack.length; i++) { + if (eq(haystack[i], needle, [], [], customTesters)) { + return true; + } + } + return false; + } + return !!haystack && haystack.indexOf(needle) >= 0; + }, + + buildFailureMessage: function() { + var args = Array.prototype.slice.call(arguments, 0), + matcherName = args[0], + isNot = args[1], + actual = args[2], + expected = args.slice(3), + englishyPredicate = matcherName.replace(/[A-Z]/g, function(s) { return ' ' + s.toLowerCase(); }); + + var message = 'Expected ' + + j$.pp(actual) + + (isNot ? ' not ' : ' ') + + englishyPredicate; + + if (expected.length > 0) { + for (var i = 0; i < expected.length; i++) { + if (i > 0) { + message += ','; + } + message += ' ' + j$.pp(expected[i]); + } + } + + return message + '.'; + } + }; + + // Equality function lovingly adapted from isEqual in + // [Underscore](http://underscorejs.org) + function eq(a, b, aStack, bStack, customTesters) { + var result = true; + + for (var i = 0; i < customTesters.length; i++) { + var customTesterResult = customTesters[i](a, b); + if (!j$.util.isUndefined(customTesterResult)) { + return customTesterResult; + } + } + + if (a instanceof j$.Any) { + result = a.jasmineMatches(b); + if (result) { + return true; + } + } + + if (b instanceof j$.Any) { + result = b.jasmineMatches(a); + if (result) { + return true; + } + } + + if (b instanceof j$.ObjectContaining) { + result = b.jasmineMatches(a); + if (result) { + return true; + } + } + + if (a instanceof Error && b instanceof Error) { + return a.message == b.message; + } + + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) { return a !== 0 || 1 / a == 1 / b; } + // A strict comparison is necessary because `null == undefined`. + if (a === null || b === null) { return a === b; } + var className = Object.prototype.toString.call(a); + if (className != Object.prototype.toString.call(b)) { return false; } + switch (className) { + // Strings, numbers, dates, and booleans are compared by value. + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return a == String(b); + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for + // other numeric values. + return a != +a ? b != +b : (a === 0 ? 1 / a == 1 / b : a == +b); + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a == +b; + // RegExps are compared by their source patterns and flags. + case '[object RegExp]': + return a.source == b.source && + a.global == b.global && + a.multiline == b.multiline && + a.ignoreCase == b.ignoreCase; + } + if (typeof a != 'object' || typeof b != 'object') { return false; } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] == a) { return bStack[length] == b; } + } + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); + var size = 0; + // Recursively compare objects and arrays. + if (className == '[object Array]') { + // Compare array lengths to determine if a deep comparison is necessary. + size = a.length; + result = size == b.length; + if (result) { + // Deep compare the contents, ignoring non-numeric properties. + while (size--) { + if (!(result = eq(a[size], b[size], aStack, bStack, customTesters))) { break; } + } + } + } else { + // Objects with different constructors are not equivalent, but `Object`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(isFunction(aCtor) && (aCtor instanceof aCtor) && + isFunction(bCtor) && (bCtor instanceof bCtor))) { + return false; + } + // Deep compare objects. + for (var key in a) { + if (has(a, key)) { + // Count the expected number of properties. + size++; + // Deep compare each member. + if (!(result = has(b, key) && eq(a[key], b[key], aStack, bStack, customTesters))) { break; } + } + } + // Ensure that both objects contain the same number of properties. + if (result) { + for (key in b) { + if (has(b, key) && !(size--)) { break; } + } + result = !size; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + + return result; + + function has(obj, key) { + return obj.hasOwnProperty(key); + } + + function isFunction(obj) { + return typeof obj === 'function'; + } + } +}; + +getJasmineRequireObj().toBe = function() { + function toBe() { + return { + compare: function(actual, expected) { + return { + pass: actual === expected + }; + } + }; + } + + return toBe; +}; + +getJasmineRequireObj().toBeCloseTo = function() { + + function toBeCloseTo() { + return { + compare: function(actual, expected, precision) { + if (precision !== 0) { + precision = precision || 2; + } + + return { + pass: Math.abs(expected - actual) < (Math.pow(10, -precision) / 2) + }; + } + }; + } + + return toBeCloseTo; +}; + +getJasmineRequireObj().toBeDefined = function() { + function toBeDefined() { + return { + compare: function(actual) { + return { + pass: (void 0 !== actual) + }; + } + }; + } + + return toBeDefined; +}; + +getJasmineRequireObj().toBeFalsy = function() { + function toBeFalsy() { + return { + compare: function(actual) { + return { + pass: !!!actual + }; + } + }; + } + + return toBeFalsy; +}; + +getJasmineRequireObj().toBeGreaterThan = function() { + + function toBeGreaterThan() { + return { + compare: function(actual, expected) { + return { + pass: actual > expected + }; + } + }; + } + + return toBeGreaterThan; +}; + + +getJasmineRequireObj().toBeLessThan = function() { + function toBeLessThan() { + return { + + compare: function(actual, expected) { + return { + pass: actual < expected + }; + } + }; + } + + return toBeLessThan; +}; +getJasmineRequireObj().toBeNaN = function(j$) { + + function toBeNaN() { + return { + compare: function(actual) { + var result = { + pass: (actual !== actual) + }; + + if (result.pass) { + result.message = 'Expected actual not to be NaN.'; + } else { + result.message = function() { return 'Expected ' + j$.pp(actual) + ' to be NaN.'; }; + } + + return result; + } + }; + } + + return toBeNaN; +}; + +getJasmineRequireObj().toBeNull = function() { + + function toBeNull() { + return { + compare: function(actual) { + return { + pass: actual === null + }; + } + }; + } + + return toBeNull; +}; + +getJasmineRequireObj().toBeTruthy = function() { + + function toBeTruthy() { + return { + compare: function(actual) { + return { + pass: !!actual + }; + } + }; + } + + return toBeTruthy; +}; + +getJasmineRequireObj().toBeUndefined = function() { + + function toBeUndefined() { + return { + compare: function(actual) { + return { + pass: void 0 === actual + }; + } + }; + } + + return toBeUndefined; +}; + +getJasmineRequireObj().toContain = function() { + function toContain(util, customEqualityTesters) { + customEqualityTesters = customEqualityTesters || []; + + return { + compare: function(actual, expected) { + + return { + pass: util.contains(actual, expected, customEqualityTesters) + }; + } + }; + } + + return toContain; +}; + +getJasmineRequireObj().toEqual = function() { + + function toEqual(util, customEqualityTesters) { + customEqualityTesters = customEqualityTesters || []; + + return { + compare: function(actual, expected) { + var result = { + pass: false + }; + + result.pass = util.equals(actual, expected, customEqualityTesters); + + return result; + } + }; + } + + return toEqual; +}; + +getJasmineRequireObj().toHaveBeenCalled = function(j$) { + + function toHaveBeenCalled() { + return { + compare: function(actual) { + var result = {}; + + if (!j$.isSpy(actual)) { + throw new Error('Expected a spy, but got ' + j$.pp(actual) + '.'); + } + + if (arguments.length > 1) { + throw new Error('toHaveBeenCalled does not take arguments, use toHaveBeenCalledWith'); + } + + result.pass = actual.calls.any(); + + result.message = result.pass ? + 'Expected spy ' + actual.and.identity() + ' not to have been called.' : + 'Expected spy ' + actual.and.identity() + ' to have been called.'; + + return result; + } + }; + } + + return toHaveBeenCalled; +}; + +getJasmineRequireObj().toHaveBeenCalledWith = function(j$) { + + function toHaveBeenCalledWith(util, customEqualityTesters) { + return { + compare: function() { + var args = Array.prototype.slice.call(arguments, 0), + actual = args[0], + expectedArgs = args.slice(1), + result = { pass: false }; + + if (!j$.isSpy(actual)) { + throw new Error('Expected a spy, but got ' + j$.pp(actual) + '.'); + } + + if (!actual.calls.any()) { + result.message = function() { return 'Expected spy ' + actual.and.identity() + ' to have been called with ' + j$.pp(expectedArgs) + ' but it was never called.'; }; + return result; + } + + if (util.contains(actual.calls.allArgs(), expectedArgs, customEqualityTesters)) { + result.pass = true; + result.message = function() { return 'Expected spy ' + actual.and.identity() + ' not to have been called with ' + j$.pp(expectedArgs) + ' but it was.'; }; + } else { + result.message = function() { return 'Expected spy ' + actual.and.identity() + ' to have been called with ' + j$.pp(expectedArgs) + ' but actual calls were ' + j$.pp(actual.calls.allArgs()).replace(/^\[ | \]$/g, '') + '.'; }; + } + + return result; + } + }; + } + + return toHaveBeenCalledWith; +}; + +getJasmineRequireObj().toMatch = function() { + + function toMatch() { + return { + compare: function(actual, expected) { + var regexp = new RegExp(expected); + + return { + pass: regexp.test(actual) + }; + } + }; + } + + return toMatch; +}; + +getJasmineRequireObj().toThrow = function(j$) { + + function toThrow(util) { + return { + compare: function(actual, expected) { + var result = { pass: false }, + threw = false, + thrown; + + if (typeof actual != 'function') { + throw new Error('Actual is not a Function'); + } + + try { + actual(); + } catch (e) { + threw = true; + thrown = e; + } + + if (!threw) { + result.message = 'Expected function to throw an exception.'; + return result; + } + + if (arguments.length == 1) { + result.pass = true; + result.message = function() { return 'Expected function not to throw, but it threw ' + j$.pp(thrown) + '.'; }; + + return result; + } + + if (util.equals(thrown, expected)) { + result.pass = true; + result.message = function() { return 'Expected function not to throw ' + j$.pp(expected) + '.'; }; + } else { + result.message = function() { return 'Expected function to throw ' + j$.pp(expected) + ', but it threw ' + j$.pp(thrown) + '.'; }; + } + + return result; + } + }; + } + + return toThrow; +}; + +getJasmineRequireObj().toThrowError = function(j$) { + function toThrowError (util) { + return { + compare: function(actual) { + var threw = false, + pass = {pass: true}, + fail = {pass: false}, + thrown, + errorType, + message, + regexp, + name, + constructorName; + + if (typeof actual != 'function') { + throw new Error('Actual is not a Function'); + } + + extractExpectedParams.apply(null, arguments); + + try { + actual(); + } catch (e) { + threw = true; + thrown = e; + } + + if (!threw) { + fail.message = 'Expected function to throw an Error.'; + return fail; + } + + if (!(thrown instanceof Error)) { + fail.message = function() { return 'Expected function to throw an Error, but it threw ' + j$.pp(thrown) + '.'; }; + return fail; + } + + if (arguments.length == 1) { + pass.message = 'Expected function not to throw an Error, but it threw ' + fnNameFor(thrown) + '.'; + return pass; + } + + if (errorType) { + name = fnNameFor(errorType); + constructorName = fnNameFor(thrown.constructor); + } + + if (errorType && message) { + if (thrown.constructor == errorType && util.equals(thrown.message, message)) { + pass.message = function() { return 'Expected function not to throw ' + name + ' with message ' + j$.pp(message) + '.'; }; + return pass; + } else { + fail.message = function() { return 'Expected function to throw ' + name + ' with message ' + j$.pp(message) + + ', but it threw ' + constructorName + ' with message ' + j$.pp(thrown.message) + '.'; }; + return fail; + } + } + + if (errorType && regexp) { + if (thrown.constructor == errorType && regexp.test(thrown.message)) { + pass.message = function() { return 'Expected function not to throw ' + name + ' with message matching ' + j$.pp(regexp) + '.'; }; + return pass; + } else { + fail.message = function() { return 'Expected function to throw ' + name + ' with message matching ' + j$.pp(regexp) + + ', but it threw ' + constructorName + ' with message ' + j$.pp(thrown.message) + '.'; }; + return fail; + } + } + + if (errorType) { + if (thrown.constructor == errorType) { + pass.message = 'Expected function not to throw ' + name + '.'; + return pass; + } else { + fail.message = 'Expected function to throw ' + name + ', but it threw ' + constructorName + '.'; + return fail; + } + } + + if (message) { + if (thrown.message == message) { + pass.message = function() { return 'Expected function not to throw an exception with message ' + j$.pp(message) + '.'; }; + return pass; + } else { + fail.message = function() { return 'Expected function to throw an exception with message ' + j$.pp(message) + + ', but it threw an exception with message ' + j$.pp(thrown.message) + '.'; }; + return fail; + } + } + + if (regexp) { + if (regexp.test(thrown.message)) { + pass.message = function() { return 'Expected function not to throw an exception with a message matching ' + j$.pp(regexp) + '.'; }; + return pass; + } else { + fail.message = function() { return 'Expected function to throw an exception with a message matching ' + j$.pp(regexp) + + ', but it threw an exception with message ' + j$.pp(thrown.message) + '.'; }; + return fail; + } + } + + function fnNameFor(func) { + return func.name || func.toString().match(/^\s*function\s*(\w*)\s*\(/)[1]; + } + + function extractExpectedParams() { + if (arguments.length == 1) { + return; + } + + if (arguments.length == 2) { + var expected = arguments[1]; + + if (expected instanceof RegExp) { + regexp = expected; + } else if (typeof expected == 'string') { + message = expected; + } else if (checkForAnErrorType(expected)) { + errorType = expected; + } + + if (!(errorType || message || regexp)) { + throw new Error('Expected is not an Error, string, or RegExp.'); + } + } else { + if (checkForAnErrorType(arguments[1])) { + errorType = arguments[1]; + } else { + throw new Error('Expected error type is not an Error.'); + } + + if (arguments[2] instanceof RegExp) { + regexp = arguments[2]; + } else if (typeof arguments[2] == 'string') { + message = arguments[2]; + } else { + throw new Error('Expected error message is not a string or RegExp.'); + } + } + } + + function checkForAnErrorType(type) { + if (typeof type !== 'function') { + return false; + } + + var Surrogate = function() {}; + Surrogate.prototype = type.prototype; + return (new Surrogate()) instanceof Error; + } + } + }; + } + + return toThrowError; +}; + +getJasmineRequireObj().version = function() { + return '2.0.1'; +}; diff --git a/bonus/bdd/jasmine/lib/jasmine-2.0.1/jasmine_favicon.png b/bonus/bdd/jasmine/lib/jasmine-2.0.1/jasmine_favicon.png new file mode 100755 index 0000000000000000000000000000000000000000..3b84583be4b9d5ae9cd5cae07b2dbaa5ebb0ad1c GIT binary patch literal 1486 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabRA=0VDb;}332@o1PuQh8X8uGu4-^- zn3*=SA+%wV=cI;&hMB$%-Lc(MLmN8%IwwUpbcA;F2Q;)twND9bn-tpC9oR4-vb8I; zp+Bg#FSKP+P(yD-%f!%zo}iZgh=%Ua=KkP@iNVbiLYsSn8~VeW`+}P$1~&ACHcbd_ z=nZb_32o{NZkZ6&1k^hrxT!a&r8lIdAIJ@9nh?|iRMsET+#A%`AKKg-(%2K)*cZ|~ zA-J&*$PEUH08MM`4Q=iVY3vVfhN$TUscGs5sR8P31X|G_+SnTcv<0XVC=Rr!u|K4# zHyCJU6UYRR;%2BtKv^I=q#2|DECn_k@wXU|=@ zeD&J(8#iy=zH|5fgNKiwJbm`!<*V0k-oF3v@zdvTKYsrD^Y>rGdNDU(R>|^oaSW-5 z%f0Y2x+hSk{p0&HA;E60Oq1S3r7U;(X3MH#?W9nxXzk)srlC4P;cZYe&v*G}mgi%< ze(bTl{@&_)cX8b-kvX%ff9D22e*M~7edm|;|Jb8m2JBzkzKiSBKR0n*?XSyM6fxZY zJ4bb;vGKRiKP(ztq3sJx9iq$Re`-EEQU0KE$sdyqayzp6H-7x+oGKZ_6;hQ_Y|p&y z7o`N7g@ z8Yl1HKL;mFo4BdxljF1}KbfMR6nNdLyPnEap1MqBdI?{g$L58$P8+wftLX5R70)7n`#pwItnbma$w{%`M(`wpsu2rJ60rdGCc> z+~lm)viMYM`=uXwK_$`#_UtRZMO=2-IV)l2vc~)doyPvg-RmxtACQ#v{7}5$&isV+ zPws~n?@yNGy#H1=vTI?;CAl9~9#VgqJ+7`4y~R+Wyj0U+){?lm9r6mtf0gl_VmUW^ z%eje%?jM%^eLuUg#ybXaQM{yQy&8UgiQ`HQ+=iTpjfd0iJ@ ssyFi&dF4%9dEry;pNN)Q>$jg_dr3r;PHA*CFc&d+y85}Sb4q9e0J812W&i*H literal 0 HcmV?d00001 diff --git a/bonus/cordova/.DS_Store b/bonus/cordova/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..fb4fc3e0643f2b03f39e8af480c61ff3c98dc26c GIT binary patch literal 10244 zcmeHMU2GIp6h3DuWp;+2Y56M@VGwBesj#Fpr6{;vii&_#w{#0sm))JQ9hsfk?96WY zNn?#MDiSqfe9#yZK|o?+G=cbHBt#>L8X&%{s`wUw zWF4t_p*HOUxR2t=xF<(l$z5qqclUsvD|%ZDblu6Wu;C=*o*Z?h>kjC;1A13RZ-;{X z>g1>J;ec^hhINQQh`?9`6jIeg8^rh#+`s>pEf~7(#A4SlGO2EI{S+Z8O6-su#QT#& z)^O6vI3+ugDemPxUDdK)yC>reRocClWmMalY@eJiDi;mC3ayV`_c6t!H&ZcMb|scBJLGhYz=Pwkm5oVOVK%j^F(IbqMt1)@3yyA?cAr+XNv7o)HUYUcXPMsfrR9cP z#>kb7jH7iKMp8ed*{Pgml=7zC?`Q`crrBd#MQ1Zt_Uq)!bZJ>G+1h;?IqGGto7`;~ zqr#bKbD9?|U9q}t{l=@)XUGkWGevO^A!|DNgSuASHO%1Mow0M8sp{rns?4x8v|cll z*BT<{qEYTOw@DHQRGM>#r7}NNJ}bDE1x=E)msvI!HL6uX;10@SN$j=hw&aXAa9N8e z_U@+u%eFV^%2lGY%gAIkLsp}%+nSgtrOGZg@-|Pou3eP+3I9CZwB3NMp1N~`Bt5{c zygg$(I}4ggcXg32-!Ma-E;UJULD+(wi>IP+jNeO`KD05mAT zK{yIe!!z(KyaXrUO*jkh!H4iMT!PDR1-^i9;9K|(zK35B5HW%h%GiiAaTeZ$H{()V zhAp@T+pz=JV<#r?ZrqML@E%OzKFpzt8k#tQ59264f=BQvJc=*iD|p(yok)d@-EO~9 z2+nUR2^<6Vm|g zuFh?mH@|rS@rH<`9k?EQ(W( z{pesB58y#OgpcB5_&7d+PvUcU44=oB@nj9qt+4a*!PJzEBmnmqDE{tj_00^gtJU;8Q;`Qq}Tb1P{* z?0oSE=mT+B_~-Z<{Odra7h)bPUoL+l$DoQwAP#WuM?$b_^Tp!wY&RA@TXlVmu?1oR zKe3=x{c7Se8HOk>1|4B!0NAfIA0mO+h*Qo4t-k1d_VzIbvftOYUdFKoA|zg}@f{~d z4y_#n+QZdTjgf~)AV#3Ic~S7Jz8L-R5&bt=Ypt%KajbzD!B;iDH8En=u!IOqbOa{3 z04OZ~zvcS>|4($7!sibW_+KM{b=}GC1U+IU2T}X9EZ45kxsOg(*tk(wau=$2I-Vp? w$5V%;<9W)3bY8}V`^8Dm{6}3$Eh_)|p8?_ipHQ!+oWlM8jhl!5$M*k!08Tv{#{d8T literal 0 HcmV?d00001 diff --git a/bonus/cordova/.gitignore b/bonus/cordova/.gitignore new file mode 100644 index 0000000..1c93701 --- /dev/null +++ b/bonus/cordova/.gitignore @@ -0,0 +1,3 @@ +CordovaLib/ +android/ +ios/ \ No newline at end of file diff --git a/bonus/cordova/3000cg/.DS_Store b/bonus/cordova/3000cg/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ce59296ea0cbb8eb0d50928ca1b4530f8a671a91 GIT binary patch literal 8196 zcmeI0U2GIp6vxlmmUebVVERG3P?S|@1ErR2N>hpgOS=>hDvjHA`=!h5&d?p5&TMvO zcZ*G9{YXS&l&B9RMjvPuV~jqbCO-HPjXszlhD7njn3x##$;1ca3!Zytwy9eh6)1F2F|`rh)>FEn zJEw&p`z7VZ+1bvXws1#JWUehd+ua>$3-9jio|}_D5QL^3T?YrovU6uIEG)kA>c!VS z`j}rgp!ev3I=8)4ezH;(W2z&bwx+Y(r{O$(X(?CPunU8(ZUL*L+t7ql2f*`qp5$J}HL3a_tiXxg%EM|W~WV3TnJjdo1Q5<@RZnA89leX>@rC~!!X@;x@-LPE|QA!kC zZRBHK=k6|18l^ihO($*FV4K(7vsaQHU`IZ#*v^TpX3|-GMu*>jAi7QpNqwbDDZfNP z7-LZfRaH~BM%i+p6x{1Zf!nYdTW}Y4VK?r<9_+Vxgb{lTN?bwQK zcqg_KWIcEn-i`aPACC}f#|XAzLTwDkae`nwg&EZGL9{WCMV!IY_!vHcPvRMTiqLx= zU%;2}q-aXBw6{ zMI)sJ!4KsZP~mD2V*CF?tAGFZmGTwv75E=3fR(X$td}luwFe~IYlkVHq|6fYn|Cb_ sp@O-ve!d+iE3h_8R1bSL>e+eM(g>x0{6hfylj^_!{r5ko@8&K3099o-vH$=8 literal 0 HcmV?d00001 diff --git a/bonus/cordova/3000cg/nanhucg/.DS_Store b/bonus/cordova/3000cg/nanhucg/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c0875e6a41c7f4466654e77683f518164e2ce52e GIT binary patch literal 14340 zcmeHNTWlOx8UFvZoy;Y1j&rk}q|T;kEGKr{bzR4?>BX^~8)@38cH&$N?(WXS9=e`c zc6RLq%fej5B|;Dt9x4z#G@(INTf{>F!2dp8<$-UKY5WV^yf58l-q9 zMLHG$Nyx)_@E`}XRlTb#VpPTU^%Ql;LZ-srpY=vZtwKHx@akW0*wm+k;-;H7DFtYd zX_Q0=LlS&iRy2iFH1K zc{J_0!81;YrgSosE@YB<`#>f$=6uZdC(>S~FzfoK^Y(>2*PQjeTz*7Wo_5HV>!yS# z`1YeV89H>E|EG+Adwb@qq`24z!r&N{@Di`ya3@+tRe1 zLo9ny*f}I87*8<`TA`a3#&MVgo2Ju6_yT+pz66)yYj7354KKit;3c>LufQ+hRrodh z27U{_gTKH(;Ggg>jG>8Zuo2hcM!W;tFpfL09q+~j-h;h3fWtU~2k{U-j1zbo&*3E6 z=%R-o#Tseh;t9n}b-9u7_2*nBtG=sG5wyB#uqgB;&!2hu$qR zzP?sbaO0-U0Vjt`V;UO9az;rKDV9j~6xkt3T1m;~mewuiHlwY`<1h(M68Y>4l1*au zvg}PvWf}=h72C}YjhHTCvS@Ugdzr_gPPIyYTDoXZt;9^`w5V6Dg9b73m@ZZ=Z)s_5 ze&9jF5TGUzU&&}Ub^R?;?g~5$Ka_O)CHxA04}XBa!y8004cB7}w&FG-*>>!}-Pnm; z*p2FdoGZ;zM{6PZ8D55ZNpu+ceJLN6^PS&fz>>#82X<@w50j{5(E^ zU&gQC*YW8P>5dfXrgFSiO}cV5`Q`1hUx=2o-mNvSc8|*S?lPYwbdJzkR|oU_3$1ZC z$d1>zc(BF=y~@_MH;U8Zy}!1#E-du)?W4sl(a(!pPhwwhSG;dvAFXbes#mucf5xD_ z$?EnJH3oQ8tZJJUzH_UkY%E`1R)3FyP1zWRS}Mk_nYS9n>x9OPTcQvl5FrpD5FrpD z@cu@iksi;0G`+KT>CL@EUU@fMpttv#(4K|;a$ad~y?>t}8xJ0@^5A)Q!#(dPy{Rwt zEZgDyKYQ;DP(q|)j|2O55N>6yW&500e(*PH3$>Q^t2J6H_B%>MEjx2)&$E_BKTD&& z7c6opQ^4v>H+_%c!E_}L@KL&lj+-*b`>CP#ge+cT3yRwVKGd*?cmb^H)Ig?^A1!Sw z^t!#eV;p*$)SVilPD$|j-_@P(lDfkVd2@?tRJhUP|EiX4q@$F3;+iH6;yX-3I_2aU ztB$+c4MY0o?s??oN-A3K{Bm4>e%<2x3XeiYkL9X`(sqWl~ci}Fn z?(|8=o7Ek5xQ|P9=P^u6hug(P{5UR2b>|6ulGL3mcvY%9-zUORcvE$!7H$2x+bKN8 z;dhCU?~KB;bsKR@Dmh_&r$`I2T2YC07h=? z21!{i5<3l1FG8A1X!_af**o + + NanhuCg + + A sample Apache Cordova application that responds to the deviceready event. + + + Apache Cordova Team + + + + + + + + + + + + + + + + + + + + diff --git a/bonus/cordova/3000cg/nanhucg/hooks/.DS_Store b/bonus/cordova/3000cg/nanhucg/hooks/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ce13e2cdc783f564f708eba17c3cf75f352ebaae GIT binary patch literal 6148 zcmeHKF-`+P474Fd5KT(TEvb +# Cordova Hooks + +Cordova Hooks represent special scripts which could be added by application and plugin developers or even by your own build system to customize cordova commands. Hook scripts could be defined by adding them to the special predefined folder (`/hooks`) or via configuration files (`config.xml` and `plugin.xml`) and run serially in the following order: +* Application hooks from `/hooks`; +* Application hooks from `config.xml`; +* Plugin hooks from `plugins/.../plugin.xml`. + +__Remember__: Make your scripts executable. + +__Note__: `.cordova/hooks` directory is also supported for backward compatibility, but we don't recommend using it as it is deprecated. + +## Supported hook types +The following hook types are supported: + + after_build/ + after_compile/ + after_docs/ + after_emulate/ + after_platform_add/ + after_platform_rm/ + after_platform_ls/ + after_plugin_add/ + after_plugin_ls/ + after_plugin_rm/ + after_plugin_search/ + after_plugin_install/ <-- Plugin hooks defined in plugin.xml are executed exclusively for a plugin being installed + after_prepare/ + after_run/ + after_serve/ + before_build/ + before_compile/ + before_docs/ + before_emulate/ + before_platform_add/ + before_platform_rm/ + before_platform_ls/ + before_plugin_add/ + before_plugin_ls/ + before_plugin_rm/ + before_plugin_search/ + before_plugin_install/ <-- Plugin hooks defined in plugin.xml are executed exclusively for a plugin being installed + before_plugin_uninstall/ <-- Plugin hooks defined in plugin.xml are executed exclusively for a plugin being uninstalled + before_prepare/ + before_run/ + before_serve/ + pre_package/ <-- Windows 8 and Windows Phone only. + +## Ways to define hooks +### Via '/hooks' directory +To execute custom action when corresponding hook type is fired, use hook type as a name for a subfolder inside 'hooks' directory and place you script file here, for example: + + # script file will be automatically executed after each build + hooks/after_build/after_build_custom_action.js + + +### Config.xml + +Hooks can be defined in project's `config.xml` using `` elements, for example: + + + + + + + + + + ... + + + + + + + ... + + +### Plugin hooks (plugin.xml) + +As a plugin developer you can define hook scripts using `` elements in a `plugin.xml` like that: + + + + + + + + ... + + +`before_plugin_install`, `after_plugin_install`, `before_plugin_uninstall` plugin hooks will be fired exclusively for the plugin being installed/uninstalled. + +## Script Interface + +### Javascript + +If you are writing hooks in Javascript you should use the following module definition: +```javascript +module.exports = function(context) { + ... +} +``` + +You can make your scipts async using Q: +```javascript +module.exports = function(context) { + var Q = context.requireCordovaModule('q'); + var deferral = new Q.defer(); + + setTimeout(function(){ + console.log('hook.js>> end'); + deferral.resolve(); + }, 1000); + + return deferral.promise; +} +``` + +`context` object contains hook type, executed script full path, hook options, command-line arguments passed to Cordova and top-level "cordova" object: +```json +{ + "hook": "before_plugin_install", + "scriptLocation": "c:\\script\\full\\path\\appBeforePluginInstall.js", + "cmdLine": "The\\exact\\command\\cordova\\run\\with arguments", + "opts": { + "projectRoot":"C:\\path\\to\\the\\project", + "cordova": { + "platforms": ["wp8"], + "plugins": ["com.plugin.withhooks"], + "version": "0.21.7-dev" + }, + "plugin": { + "id": "com.plugin.withhooks", + "pluginInfo": { + ... + }, + "platform": "wp8", + "dir": "C:\\path\\to\\the\\project\\plugins\\com.plugin.withhooks" + } + }, + "cordova": {...} +} + +``` +`context.opts.plugin` object will only be passed to plugin hooks scripts. + +You can also require additional Cordova modules in your script using `context.requireCordovaModule` in the following way: +```javascript +var Q = context.requireCordovaModule('q'); +``` + +__Note__: new module loader script interface is used for the `.js` files defined via `config.xml` or `plugin.xml` only. +For compatibility reasons hook files specified via `/hooks` folders are run via Node child_process spawn, see 'Non-javascript' section below. + +### Non-javascript + +Non-javascript scripts are run via Node child_process spawn from the project's root directory and have the root directory passes as the first argument. All other options are passed to the script using environment variables: + +* CORDOVA_VERSION - The version of the Cordova-CLI. +* CORDOVA_PLATFORMS - Comma separated list of platforms that the command applies to (e.g.: android, ios). +* CORDOVA_PLUGINS - Comma separated list of plugin IDs that the command applies to (e.g.: org.apache.cordova.file, org.apache.cordova.file-transfer) +* CORDOVA_HOOK - Path to the hook that is being executed. +* CORDOVA_CMDLINE - The exact command-line arguments passed to cordova (e.g.: cordova run ios --emulate) + +If a script returns a non-zero exit code, then the parent cordova command will be aborted. + +## Writing hooks + +We highly recommend writing your hooks using Node.js so that they are +cross-platform. Some good examples are shown here: + +[http://devgirl.org/2013/11/12/three-hooks-your-cordovaphonegap-project-needs/](http://devgirl.org/2013/11/12/three-hooks-your-cordovaphonegap-project-needs/) + +Also, note that even if you are working on Windows, and in case your hook scripts aren't bat files (which is recommended, if you want your scripts to work in non-Windows operating systems) Cordova CLI will expect a shebang line as the first line for it to know the interpreter it needs to use to launch the script. The shebang line should match the following example: + + #!/usr/bin/env [name_of_interpreter_executable] diff --git a/bonus/cordova/3000cg/nanhucg/npm-debug.log b/bonus/cordova/3000cg/nanhucg/npm-debug.log new file mode 100644 index 0000000..1ebb0c0 --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/npm-debug.log @@ -0,0 +1,250 @@ +0 info it worked if it ends with ok +1 verbose cli [ 'node', '/usr/local/bin/npm', 'install', '-g', 'plugman' ] +2 info using npm@1.4.23 +3 info using node@v0.10.31 +4 verbose cache add [ 'plugman', null ] +5 verbose cache add name=undefined spec="plugman" args=["plugman",null] +6 verbose parsed url { protocol: null, +6 verbose parsed url slashes: null, +6 verbose parsed url auth: null, +6 verbose parsed url host: null, +6 verbose parsed url port: null, +6 verbose parsed url hostname: null, +6 verbose parsed url hash: null, +6 verbose parsed url search: null, +6 verbose parsed url query: null, +6 verbose parsed url pathname: 'plugman', +6 verbose parsed url path: 'plugman', +6 verbose parsed url href: 'plugman' } +7 silly lockFile 3c17847d-plugman plugman +8 verbose lock plugman /Users/shiyimin/.npm/3c17847d-plugman.lock +9 silly lockFile 3c17847d-plugman plugman +10 silly lockFile 3c17847d-plugman plugman +11 verbose addNamed [ 'plugman', '' ] +12 verbose addNamed [ null, '*' ] +13 silly lockFile 9ad59204-plugman plugman@ +14 verbose lock plugman@ /Users/shiyimin/.npm/9ad59204-plugman.lock +15 silly addNameRange { name: 'plugman', range: '*', hasData: false } +16 verbose request where is /plugman +17 verbose request registry https://registry.npmjs.org/ +18 verbose request id 1ea1852d218b3200 +19 verbose url raw /plugman +20 verbose url resolving [ 'https://registry.npmjs.org/', './plugman' ] +21 verbose url resolved https://registry.npmjs.org/plugman +22 verbose request where is https://registry.npmjs.org/plugman +23 info trying registry request attempt 1 at 00:12:56 +24 http GET https://registry.npmjs.org/plugman +25 http 200 https://registry.npmjs.org/plugman +26 silly registry.get cb [ 200, +26 silly registry.get { server: 'CouchDB/1.5.0 (Erlang OTP/R16B03)', +26 silly registry.get etag: '"1MI1VMOCQCISM4SU15AFPBABU"', +26 silly registry.get 'content-type': 'application/json', +26 silly registry.get 'cache-control': 'max-age=60', +26 silly registry.get 'content-length': '143000', +26 silly registry.get 'accept-ranges': 'bytes', +26 silly registry.get date: 'Fri, 17 Jul 2015 16:13:00 GMT', +26 silly registry.get via: '1.1 varnish', +26 silly registry.get age: '0', +26 silly registry.get connection: 'keep-alive', +26 silly registry.get 'x-served-by': 'cache-sjc3125-SJC', +26 silly registry.get 'x-cache': 'MISS', +26 silly registry.get 'x-cache-hits': '0', +26 silly registry.get 'x-timer': 'S1437149580.263912,VS0,VE347', +26 silly registry.get vary: 'Accept' } ] +27 silly addNameRange number 2 { name: 'plugman', range: '*', hasData: true } +28 silly addNameRange versions [ 'plugman', +28 silly addNameRange [ '0.5.6', +28 silly addNameRange '0.5.7', +28 silly addNameRange '0.5.8', +28 silly addNameRange '0.5.9', +28 silly addNameRange '0.6.0', +28 silly addNameRange '0.6.1', +28 silly addNameRange '0.6.2', +28 silly addNameRange '0.6.3', +28 silly addNameRange '0.7.0', +28 silly addNameRange '0.7.1', +28 silly addNameRange '0.7.2', +28 silly addNameRange '0.7.3', +28 silly addNameRange '0.7.4', +28 silly addNameRange '0.7.5', +28 silly addNameRange '0.7.6', +28 silly addNameRange '0.7.7', +28 silly addNameRange '0.7.8', +28 silly addNameRange '0.7.9', +28 silly addNameRange '0.7.10', +28 silly addNameRange '0.7.11', +28 silly addNameRange '0.7.12', +28 silly addNameRange '0.7.13', +28 silly addNameRange '0.7.14', +28 silly addNameRange '0.8.0', +28 silly addNameRange '0.8.1', +28 silly addNameRange '0.8.2', +28 silly addNameRange '0.9.0', +28 silly addNameRange '0.9.1', +28 silly addNameRange '0.9.2', +28 silly addNameRange '0.9.3', +28 silly addNameRange '0.9.4', +28 silly addNameRange '0.9.5', +28 silly addNameRange '0.9.6', +28 silly addNameRange '0.9.7', +28 silly addNameRange '0.9.8', +28 silly addNameRange '0.9.9', +28 silly addNameRange '0.9.10', +28 silly addNameRange '0.9.11', +28 silly addNameRange '0.9.20', +28 silly addNameRange '0.9.21', +28 silly addNameRange '0.9.22', +28 silly addNameRange '0.9.23', +28 silly addNameRange '0.10.0', +28 silly addNameRange '0.10.1', +28 silly addNameRange '0.11.0', +28 silly addNameRange '0.12.0', +28 silly addNameRange '0.13.0', +28 silly addNameRange '0.14.0', +28 silly addNameRange '0.15.0', +28 silly addNameRange '0.16.0', +28 silly addNameRange '0.17.0', +28 silly addNameRange '0.18.0', +28 silly addNameRange '0.19.0', +28 silly addNameRange '0.20.0', +28 silly addNameRange '0.20.1', +28 silly addNameRange '0.20.2', +28 silly addNameRange '0.21.0', +28 silly addNameRange '0.22.0', +28 silly addNameRange '0.22.1', +28 silly addNameRange '0.22.2', +28 silly addNameRange '0.22.4', +28 silly addNameRange '0.22.5', +28 silly addNameRange '0.22.6', +28 silly addNameRange '0.22.7', +28 silly addNameRange '0.22.8', +28 silly addNameRange '0.22.9', +28 silly addNameRange '0.22.10', +28 silly addNameRange '0.22.11', +28 silly addNameRange '0.22.12', +28 silly addNameRange '0.22.14', +28 silly addNameRange '0.22.15', +28 silly addNameRange '0.22.16', +28 silly addNameRange '0.22.17', +28 silly addNameRange '0.23.0', +28 silly addNameRange '0.23.1', +28 silly addNameRange '0.23.3' ] ] +29 verbose addNamed [ 'plugman', '0.23.3' ] +30 verbose addNamed [ '0.23.3', '0.23.3' ] +31 silly lockFile 3f118b95-plugman-0-23-3 plugman@0.23.3 +32 verbose lock plugman@0.23.3 /Users/shiyimin/.npm/3f118b95-plugman-0-23-3.lock +33 silly lockFile 3d9884dd-s-org-plugman-plugman-0-23-3-tgz https://registry.npmjs.org/plugman/-/plugman-0.23.3.tgz +34 verbose lock https://registry.npmjs.org/plugman/-/plugman-0.23.3.tgz /Users/shiyimin/.npm/3d9884dd-s-org-plugman-plugman-0-23-3-tgz.lock +35 verbose addRemoteTarball [ 'https://registry.npmjs.org/plugman/-/plugman-0.23.3.tgz', +35 verbose addRemoteTarball '1579da5a62ac5130c13bbbb9fc8f93d5b8489a7d' ] +36 info retry fetch attempt 1 at 00:13:01 +37 verbose fetch to= /var/folders/nz/b69rp3mx6w3f3jyry_430wj80000gn/T/npm-1207-qF3xqaKk/registry.npmjs.org/plugman/-/plugman-0.23.3.tgz +38 http GET https://registry.npmjs.org/plugman/-/plugman-0.23.3.tgz +39 http 200 https://registry.npmjs.org/plugman/-/plugman-0.23.3.tgz +40 silly lockFile 3d9884dd-s-org-plugman-plugman-0-23-3-tgz https://registry.npmjs.org/plugman/-/plugman-0.23.3.tgz +41 silly lockFile 3d9884dd-s-org-plugman-plugman-0-23-3-tgz https://registry.npmjs.org/plugman/-/plugman-0.23.3.tgz +42 silly lockFile 3f118b95-plugman-0-23-3 plugman@0.23.3 +43 silly lockFile 3f118b95-plugman-0-23-3 plugman@0.23.3 +44 silly lockFile 9ad59204-plugman plugman@ +45 silly lockFile 9ad59204-plugman plugman@ +46 silly resolved [ { author: { name: 'Andrew Lunny', email: 'alunny@gmail.com' }, +46 silly resolved name: 'plugman', +46 silly resolved description: 'install/uninstall Cordova plugins', +46 silly resolved version: '0.23.3', +46 silly resolved repository: +46 silly resolved { type: 'git', +46 silly resolved url: 'git://git-wip-us.apache.org/repos/asf/cordova-plugman.git' }, +46 silly resolved bugs: +46 silly resolved { url: 'https://issues.apache.org/jira/browse/CB', +46 silly resolved email: 'dev@cordova.apache.org' }, +46 silly resolved main: 'plugman.js', +46 silly resolved engines: { node: '>=0.9.9' }, +46 silly resolved engineStrict: true, +46 silly resolved dependencies: +46 silly resolved { 'cordova-lib': '5.1.1', +46 silly resolved nopt: '1.0.9', +46 silly resolved underscore: '1.7.0', +46 silly resolved q: '1.0.1', +46 silly resolved npm: '1.3.4', +46 silly resolved rc: '0.5.2' }, +46 silly resolved devDependencies: { jshint: '2.5.8', 'jasmine-node': '1.14.5' }, +46 silly resolved bin: { plugman: './main.js' }, +46 silly resolved scripts: +46 silly resolved { test: 'npm run jasmine && npm run jshint', +46 silly resolved jshint: 'node node_modules/jshint/bin/jshint src', +46 silly resolved jasmine: 'jasmine-node --captureExceptions --color spec' }, +46 silly resolved contributors: +46 silly resolved [ [Object], +46 silly resolved [Object], +46 silly resolved [Object], +46 silly resolved [Object], +46 silly resolved [Object], +46 silly resolved [Object], +46 silly resolved [Object], +46 silly resolved [Object], +46 silly resolved [Object], +46 silly resolved [Object], +46 silly resolved [Object] ], +46 silly resolved _id: 'plugman@0.23.3', +46 silly resolved _shasum: '1579da5a62ac5130c13bbbb9fc8f93d5b8489a7d', +46 silly resolved _resolved: 'https://registry.npmjs.org/plugman/-/plugman-0.23.3.tgz', +46 silly resolved _from: 'plugman@', +46 silly resolved _npmVersion: '2.9.1', +46 silly resolved _nodeVersion: '0.10.36', +46 silly resolved _npmUser: { name: 'stevegill', email: 'stevengill97@gmail.com' }, +46 silly resolved dist: +46 silly resolved { shasum: '1579da5a62ac5130c13bbbb9fc8f93d5b8489a7d', +46 silly resolved tarball: 'http://registry.npmjs.org/plugman/-/plugman-0.23.3.tgz' }, +46 silly resolved maintainers: +46 silly resolved [ [Object], +46 silly resolved [Object], +46 silly resolved [Object], +46 silly resolved [Object], +46 silly resolved [Object], +46 silly resolved [Object], +46 silly resolved [Object], +46 silly resolved [Object], +46 silly resolved [Object], +46 silly resolved [Object], +46 silly resolved [Object], +46 silly resolved [Object], +46 silly resolved [Object] ], +46 silly resolved directories: {} } ] +47 info install plugman@0.23.3 into /usr/local/lib +48 info installOne plugman@0.23.3 +49 verbose lib/node_modules/plugman unbuild +50 verbose tar unpack /Users/shiyimin/.npm/plugman/0.23.3/package.tgz +51 silly lockFile 816dbcda-r-local-lib-node-modules-plugman tar:///usr/local/lib/node_modules/plugman +52 verbose lock tar:///usr/local/lib/node_modules/plugman /Users/shiyimin/.npm/816dbcda-r-local-lib-node-modules-plugman.lock +53 silly lockFile 57b501f4-n-npm-plugman-0-23-3-package-tgz tar:///Users/shiyimin/.npm/plugman/0.23.3/package.tgz +54 verbose lock tar:///Users/shiyimin/.npm/plugman/0.23.3/package.tgz /Users/shiyimin/.npm/57b501f4-n-npm-plugman-0-23-3-package-tgz.lock +55 silly gunzTarPerm modes [ '755', '644' ] +56 error Error: EACCES, mkdir '/usr/local/lib/node_modules/plugman' +56 error { [Error: EACCES, mkdir '/usr/local/lib/node_modules/plugman'] +56 error errno: 3, +56 error code: 'EACCES', +56 error path: '/usr/local/lib/node_modules/plugman', +56 error fstream_type: 'Directory', +56 error fstream_path: '/usr/local/lib/node_modules/plugman', +56 error fstream_class: 'DirWriter', +56 error fstream_stack: +56 error [ '/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23', +56 error '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:46:53', +56 error 'Object.oncomplete (fs.js:107:15)' ] } +57 error Please try running this command again as root/Administrator. +58 error System Darwin 14.3.0 +59 error command "node" "/usr/local/bin/npm" "install" "-g" "plugman" +60 error cwd /Users/shiyimin/workspace/3000cg/nanhucg +61 error node -v v0.10.31 +62 error npm -v 1.4.23 +63 error path /usr/local/lib/node_modules/plugman +64 error fstream_path /usr/local/lib/node_modules/plugman +65 error fstream_type Directory +66 error fstream_class DirWriter +67 error code EACCES +68 error errno 3 +69 error stack Error: EACCES, mkdir '/usr/local/lib/node_modules/plugman' +70 error fstream_stack /usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23 +70 error fstream_stack /usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:46:53 +70 error fstream_stack Object.oncomplete (fs.js:107:15) +71 verbose exit [ 3, true ] diff --git a/bonus/cordova/3000cg/nanhucg/platforms/.DS_Store b/bonus/cordova/3000cg/nanhucg/platforms/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..19e4ad71316bcfb66491743ab09fcc5f863c100d GIT binary patch literal 6148 zcmeH~Jx;_x427Rzi9`zsg6AI)QJ|oqK+lrr z%{cbV<}2bI0JeU(JcG>fYk9?&czJ+ln69Ewr0TB=Z5%?_u@4d9;UaCeB5CIYRB;enN zMtAK>$JF?AaEL1ab-{2L=W&;yHV;s{(lM10nq?_9ORcULmgS7M%IiwU)GUX^$=s(- zwz{EMoX&WQbXb?FQ3OO_N?~D-#b}FIt=Vksu5Nag{b(p9kelG$ zf57jXC;tP{o8nE6g7`;xslS<>N|sIWP!K8emN&ooc<;^TH*aRLM8q1YQzbHps0kiF;X5fEgK;F&*|E#zT8gS-TF<={Xg}#z2bHI>&EemJV@GJ z(2Yi1*H*p2;r#|r11DZVZ0xxu`-UA1b9^XAg|+F)QjE|<^DEnT>FI~+WD_WZ@mSFhi^{~)Ns0f`e*$}xqz z@DY^)lm14v)#1G`GdlfloK256n@*Z^h`xOK@l#qB;`F%lSDVlsoy!t|3UR{3zM95K zgfWY5;dJjJTVh&(y2yYnXb&2or;kjC=n+OjWJd><3&^ zGb4_gnW--nrcOp?N^@fM40Wj)&", + "count": 1 + }, + { + "xml": "", + "count": 1 + }, + { + "xml": "", + "count": 1 + }, + { + "xml": "", + "count": 1 + }, + { + "xml": "", + "count": 1 + }, + { + "xml": "", + "count": 1 + }, + { + "xml": "", + "count": 1 + }, + { + "xml": "", + "count": 1 + }, + { + "xml": "", + "count": 1 + }, + { + "xml": "", + "count": 1 + }, + { + "xml": "", + "count": 1 + }, + { + "xml": "", + "count": 1 + }, + { + "xml": "", + "count": 1 + }, + { + "xml": "", + "count": 1 + }, + { + "xml": "", + "count": 1 + }, + { + "xml": "", + "count": 1 + }, + { + "xml": "", + "count": 1 + } + ] + } + }, + "AndroidManifest.xml": { + "parents": { + "/*": [ + { + "xml": "", + "count": 3 + }, + { + "xml": "", + "count": 1 + }, + { + "xml": "", + "count": 1 + }, + { + "xml": "", + "count": 1 + }, + { + "xml": "", + "count": 1 + }, + { + "xml": "", + "count": 1 + }, + { + "xml": "", + "count": 1 + } + ] + } + } + } + }, + "installed_plugins": { + "baiduloc": { + "PACKAGE_NAME": "com.vikvon.nanhucg" + }, + "cordova-plugin-whitelist": { + "PACKAGE_NAME": "com.vikvon.nanhucg" + }, + "cordova-plugin-camera": { + "PACKAGE_NAME": "com.vikvon.nanhucg" + }, + "cordova-plugin-file": { + "PACKAGE_NAME": "com.vikvon.nanhucg" + }, + "cordova-plugin-splashscreen": { + "PACKAGE_NAME": "com.vikvon.nanhucg" + }, + "cordova-plugin-device": { + "PACKAGE_NAME": "com.vikvon.nanhucg" + }, + "cordova-plugin-console": { + "PACKAGE_NAME": "com.vikvon.nanhucg" + }, + "cordova-plugin-battery-status": { + "PACKAGE_NAME": "com.vikvon.nanhucg" + }, + "cordova-plugin-contacts": { + "PACKAGE_NAME": "com.vikvon.nanhucg" + }, + "cordova-plugin-device-motion": { + "PACKAGE_NAME": "com.vikvon.nanhucg" + }, + "cordova-plugin-device-orientation": { + "PACKAGE_NAME": "com.vikvon.nanhucg" + }, + "cordova-plugin-dialogs": { + "PACKAGE_NAME": "com.vikvon.nanhucg" + }, + "cordova-plugin-file-transfer": { + "PACKAGE_NAME": "com.vikvon.nanhucg" + }, + "cordova-plugin-globalization": { + "PACKAGE_NAME": "com.vikvon.nanhucg" + }, + "cordova-plugin-inappbrowser": { + "PACKAGE_NAME": "com.vikvon.nanhucg" + }, + "cordova-plugin-network-information": { + "PACKAGE_NAME": "com.vikvon.nanhucg" + }, + "toast": { + "PACKAGE_NAME": "com.vikvon.nanhucg" + } + }, + "dependent_plugins": {} +} \ No newline at end of file diff --git a/bonus/cordova/3000cg/nanhucg/plugins/baiduloc/.DS_Store b/bonus/cordova/3000cg/nanhucg/plugins/baiduloc/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b17a758fc71563dc35613266c9c86d21191dab36 GIT binary patch literal 6148 zcmeHKJxfDD5S-N%L7SA8S6T`FgCj)2+CLys5aDUk1T0_W@A99;*$>3*$1Fi^9w7JPF_{sXWhpsJtws#Xa>iTb_2Mx(%VBXdpHnwmO(+(( zGu|Q{)|2I>fD|}X;5fGn@BdfC5A*+Fk#q! literal 0 HcmV?d00001 diff --git a/bonus/cordova/3000cg/nanhucg/plugins/baiduloc/plugin.xml b/bonus/cordova/3000cg/nanhucg/plugins/baiduloc/plugin.xml new file mode 100644 index 0000000..84ae152 --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/plugins/baiduloc/plugin.xml @@ -0,0 +1,22 @@ + + + + baiduloc + Cordova baidulocPlugin + Apache 2.0 + cordova,baiduloc + + + + + + + + + + + + + diff --git a/bonus/cordova/3000cg/nanhucg/plugins/fetch.json b/bonus/cordova/3000cg/nanhucg/plugins/fetch.json new file mode 100644 index 0000000..9936df5 --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/plugins/fetch.json @@ -0,0 +1,139 @@ +{ + "baiduloc": { + "source": { + "type": "local", + "path": "baiduloc" + }, + "is_top_level": true, + "variables": {} + }, + "cordova-plugin-whitelist": { + "source": { + "type": "registry", + "id": "cordova-plugin-whitelist@1" + }, + "is_top_level": true, + "variables": {} + }, + "cordova-plugin-camera": { + "source": { + "type": "registry", + "id": "cordova-plugin-camera" + }, + "is_top_level": true, + "variables": {} + }, + "cordova-plugin-file": { + "source": { + "type": "registry", + "id": "cordova-plugin-file" + }, + "is_top_level": true, + "variables": {} + }, + "cordova-plugin-splashscreen": { + "source": { + "type": "git", + "url": "https://github.com/apache/cordova-plugin-splashscreen.git", + "subdir": "." + }, + "is_top_level": true, + "variables": {} + }, + "cordova-plugin-device": { + "source": { + "type": "registry", + "id": "cordova-plugin-device" + }, + "is_top_level": true, + "variables": {} + }, + "cordova-plugin-console": { + "source": { + "type": "registry", + "id": "cordova-plugin-console" + }, + "is_top_level": true, + "variables": {} + }, + "cordova-plugin-battery-status": { + "source": { + "type": "registry", + "id": "cordova-plugin-battery-status" + }, + "is_top_level": true, + "variables": {} + }, + "cordova-plugin-contacts": { + "source": { + "type": "registry", + "id": "cordova-plugin-contacts" + }, + "is_top_level": true, + "variables": {} + }, + "cordova-plugin-device-motion": { + "source": { + "type": "registry", + "id": "cordova-plugin-device-motion" + }, + "is_top_level": true, + "variables": {} + }, + "cordova-plugin-device-orientation": { + "source": { + "type": "registry", + "id": "cordova-plugin-device-orientation" + }, + "is_top_level": true, + "variables": {} + }, + "cordova-plugin-dialogs": { + "source": { + "type": "registry", + "id": "cordova-plugin-dialogs" + }, + "is_top_level": true, + "variables": {} + }, + "cordova-plugin-file-transfer": { + "source": { + "type": "registry", + "id": "cordova-plugin-file-transfer" + }, + "is_top_level": true, + "variables": {} + }, + "cordova-plugin-globalization": { + "source": { + "type": "registry", + "id": "cordova-plugin-globalization" + }, + "is_top_level": true, + "variables": {} + }, + "cordova-plugin-inappbrowser": { + "source": { + "type": "registry", + "id": "cordova-plugin-inappbrowser" + }, + "is_top_level": true, + "variables": {} + }, + "cordova-plugin-network-information": { + "source": { + "type": "registry", + "id": "cordova-plugin-network-information" + }, + "is_top_level": true, + "variables": {} + }, + "toast": { + "source": { + "type": "local", + "path": "toast" + }, + "is_top_level": true, + "variables": {} + } +} \ No newline at end of file diff --git a/bonus/cordova/3000cg/nanhucg/plugins/toast/plugin.xml b/bonus/cordova/3000cg/nanhucg/plugins/toast/plugin.xml new file mode 100644 index 0000000..8569b6f --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/plugins/toast/plugin.xml @@ -0,0 +1,29 @@ + + + + toast + Cordova toast Plugin + Apache 2.0 + cordova,toast + + + + + + + + + + + + + + + + diff --git a/bonus/cordova/3000cg/nanhucg/www/.DS_Store b/bonus/cordova/3000cg/nanhucg/www/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f499d0fecec5442e23a4dbc21bddd69e30e4fb44 GIT binary patch literal 8196 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 LHfkt@K(PD|Q{O_Y literal 0 HcmV?d00001 diff --git a/bonus/cordova/3000cg/nanhucg/www/css/images/icons-18-black.png b/bonus/cordova/3000cg/nanhucg/www/css/images/icons-18-black.png new file mode 100755 index 0000000000000000000000000000000000000000..791646384bf6cf9cf0720c78cfbdc8ffb6d94e7e GIT binary patch literal 1968 zcmZWqc{E%57Cwra+a!n~YH3#bDS$nNd!(P%WlZf+0%&PFh+Tm;}3^0AR#^0DNX<28gV#u8xe192_-qKVoBJdwO~R!elbR3c!FG zPyj}N0y^MEAb=ZC11vxQ4u*jaa0Dkj@C69405bMV?d|QL0Pd}=tp^I=3f0xs z;A{MS7+{yg5Y7T9@+QfZ48h+62_7851E#GAI>zZtE(7?0K;n=v5{V@2zX)_3XkZ)+ zT0#d{LBcCY*n^3KaRPb=vtyh)-a%s^JD5y5%oGUdTn2ZX%Y^}tq{Ek2M=_O(ae$o$lP4Sgb19o8%J_mto!=^^{71 zfi-{V>1i*m@xiwxVB5Q=tsrjfmo?hi^yMTrwFkcETNn6Jq=~& zS)1UTL0?psmL@O#F();btXbvWdF*n_4VPb2-z+H}HXBy8Mb8dlUiJo&^EV&7pZWO- z!i@9~lV0Qv^+|eODbhywm0e**Oj9FT(?wxlDZ_0i-_+D^USd_A8Az$9ztrzJRya({ z{B(@SR)=j9wIzF$y;el)CCuxK)yDLvr@B5hvw7n4ejqmo7ZPY1F{aNN4LOXcd_1|3~!5qY=H? zEr-4f>SWouHlVpkZH9V~%I^h;{R^$+@9Xy9I2A z>PeLRIn$qiSNO5}Uc!oFEh!Zz-`qyYrg}IY;;at(BRBk8N}RXP=_)0ML?7iing@KG zLq-QbJ}i;Ws79(8=AAb6D#J!me`%v0LOSJHIcGGpjICM07)<479$o*oRh+0W>Y7F^ zGPtmvc721ua+{H z`P1LMHdfl+86sdk1!JCsaD0?A1tr!zq?nB=;H;L81(iU}Lkt6*0GbTLX)Yo6OZ~lz z`VS|6Dr2qnW}hrnTB@+oSbV3iS2iCmTw@990$)Aq8rL(DSuP7q>8wTz<&~O4B|m=R zo6*@t>y;&SDDBF`m)3Nm#h%jV-o0|3YK3MCpS3fK^nAHWdN;0G{SxYC;<>>v z4JdOj#(e3btb4D8mRp+m@SnAk-o<)?Lr>mCm9zocA-KWhx8qPhTgB z6PiRMjkSzWo3euE<=?6#J48n_#wadMyQ7-hy9zAPCm-I*V7``f9izsPERkW=*FJMiI%-2l%YdILVG4SF-9FzANwfC^m8#5L}8$x2Oat{~zs41eSIk2mh7-T3|=btJkH8t{QB F{{sZoU`7A{ literal 0 HcmV?d00001 diff --git a/bonus/cordova/3000cg/nanhucg/www/css/images/icons-18-white.png b/bonus/cordova/3000cg/nanhucg/www/css/images/icons-18-white.png new file mode 100755 index 0000000000000000000000000000000000000000..3419b81f6a8896807e1e6af0f14c8415fbe39da6 GIT binary patch literal 1988 zcmZ8ieK^zWAO6lJFDb?_VcNWA226zx%qL=ea-kb3gazdA|RA*`5cSHYsmWh9GE@ zi!=2g1R(;leUFhWB^y}i9t{sABWz`x!RtQD4-GO3!Jz03g3g*hDRPe;0+Oe01XC-dYHf<%<{QIEVw)!d=M%aB=lht0sRA1 z5}JT!Q3?O7z|93U%wkXvqe=W9$I&FXoX<@!AL7F0FmRT`d@duMHH7At4-sGzfy5&4 z`2^#_dS?iduW+H-ABs9U(|?lLe+2XLBh$FCHTNf13PoM+wEBa69h0^N4K5AK!?6}? zCt4DG{I?$0ZMVg>$DC9z?Bd?CezP_H(}sdV=8hkDnK{eMpy>^Tf3H5y)y;>spTBzb zHAl2dBwJL;C7(Ug#{U*hPZ2o>DUB+fbykiU))93*u6&lc6f$VioLppWv{QI6_|h(X zSNq2Fk_Sfm_uAiIb-)Q}X?%=a5aJKrBlKfCA7R$EcX#4(b*U@DeO?JB17FUW`qdQO z(OC*%YE>;e2|mZTOu9934XeBz)g#r=Li4+CJ(uO3y{!`y?g-m7OEKoI3K1$b?$@9! z)jXBrf<$w-Xvpm@4Px&IQPSHs3gL-ztq;FH!XqJ^!I1|Vo4mTR=}X8YW)_N||0U6mDdCMfB+~kIkNNgaWR^U#@GKq&$*lzRX3) zjw*`AsnBA^D3Y|vBmN>UgB7FI=Qs&wu()n z1tu}#J5IkYsL8okkc?QK)*5SjKnwag8yo&>TF~qmK_gFRj;N(WOMMH!ZoZiv7PiX$ zuKJwo0S$KQhMBtZ^63qwSz<}x*u?4Dh6W$2cLOaYPhEnGw`jzXapt=%ui1B&-u)sz zATKlCY?AZET^z}GIJ4jExFl%7SsIAdfU;CDu&k+Nn-S@$Ash0URQd(~f-GkG2~!d) zBdIxd26d=*qfft^R=rq#&{~v$h$8D%nq&KXD)x4cyzKOge#EFa!64UGT^^ZL_jOLw z&JPSP7h5VQ|0O^y^jKIB^YZ7MY}mxBUABxuuAE)ST;BYu&>pGLuBl};Ip;7&GI(>) z5$pXbqJx-qt7xk9{Gy@T^rCrpf3c2W*UfXT3Kx)us(&X1U!;(BvZ^jNJbw1);2ZI)DRb5U+8&^dy^q4MaJ&mcu9Nezc=); ztS46xsJMW3EwQV}mQ&VCoXB?jI;xyKh+5HFNbF=If{$Xhjk2*374cX4lC+o#+SIP&`G4>#`K z5>aM_j`;ACt;h90F!SP$m?nB{oyWWnUDw*36#DLzprl*+i)489mzN3PG#OI(Rm$mXwG3faivnnySuMkH(KQ7Lo@UYC`)BAC=a<4=`ftG%RgAjxOV5he`dUcj Wp+wY%7)$WSfLt68P^&3{m;MJcl$Lk^ literal 0 HcmV?d00001 diff --git a/bonus/cordova/3000cg/nanhucg/www/css/images/icons-36-black.png b/bonus/cordova/3000cg/nanhucg/www/css/images/icons-36-black.png new file mode 100755 index 0000000000000000000000000000000000000000..043bfcd521163a123843f15ac2fba220eab51d05 GIT binary patch literal 3859 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 literal 0 HcmV?d00001 diff --git a/bonus/cordova/3000cg/nanhucg/www/css/jquery.mobile-1.3.2.css b/bonus/cordova/3000cg/nanhucg/www/css/jquery.mobile-1.3.2.css new file mode 100755 index 0000000..96a75f0 --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/css/jquery.mobile-1.3.2.css @@ -0,0 +1,3370 @@ +/*! +* jQuery Mobile 1.3.2 +* Git HEAD hash: 528cf0e96940644ea644096bfeb913ed920ffaef <> Date: Fri Jul 19 2013 22:17:57 UTC +* http://jquerymobile.com +* +* Copyright 2010, 2013 jQuery Foundation, Inc. and other contributors +* Released under the MIT license. +* http://jquery.org/license +* +*/ + + +/* Swatches */ +/* A +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-a { + border: 1px solid #333 /*{a-bar-border}*/; + background: #111 /*{a-bar-background-color}*/; + color: #fff /*{a-bar-color}*/; + font-weight: bold; + text-shadow: 0 /*{a-bar-shadow-x}*/ -1px /*{a-bar-shadow-y}*/ 0 /*{a-bar-shadow-radius}*/ #000 /*{a-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #3c3c3c /*{a-bar-background-start}*/), to( #111 /*{a-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); +} +.ui-bar-a, +.ui-bar-a input, +.ui-bar-a select, +.ui-bar-a textarea, +.ui-bar-a button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-a .ui-link-inherit { + color: #fff /*{a-bar-color}*/; +} +.ui-bar-a a.ui-link { + color: #7cc4e7 /*{a-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-a a.ui-link:visited { + color: #2489ce /*{a-bar-link-visited}*/; +} +.ui-bar-a a.ui-link:hover { + color: #2489ce /*{a-bar-link-hover}*/; +} +.ui-bar-a a.ui-link:active { + color: #2489ce /*{a-bar-link-active}*/; +} +.ui-body-a, +.ui-overlay-a { + border: 1px solid #444 /*{a-body-border}*/; + background: #222 /*{a-body-background-color}*/; + color: #fff /*{a-body-color}*/; + text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 0 /*{a-body-shadow-radius}*/ #111 /*{a-body-shadow-color}*/; + font-weight: normal; + background-image: -webkit-gradient(linear, left top, left bottom, from( #444 /*{a-body-background-start}*/), to( #222 /*{a-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); +} +.ui-overlay-a { + background-image: none; + border-width: 0; +} +.ui-body-a, +.ui-body-a input, +.ui-body-a select, +.ui-body-a textarea, +.ui-body-a button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-a .ui-link-inherit { + color: #fff /*{a-body-color}*/; +} +.ui-body-a .ui-link { + color: #2489ce /*{a-body-link-color}*/; + font-weight: bold; +} +.ui-body-a .ui-link:visited { + color: #2489ce /*{a-body-link-visited}*/; +} +.ui-body-a .ui-link:hover { + color: #2489ce /*{a-body-link-hover}*/; +} +.ui-body-a .ui-link:active { + color: #2489ce /*{a-body-link-active}*/; +} +.ui-btn-up-a { + border: 1px solid #111 /*{a-bup-border}*/; + background: #333 /*{a-bup-background-color}*/; + font-weight: bold; + color: #fff /*{a-bup-color}*/; + text-shadow: 0 /*{a-bup-shadow-x}*/ 1px /*{a-bup-shadow-y}*/ 0 /*{a-bup-shadow-radius}*/ #111 /*{a-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #444 /*{a-bup-background-start}*/), to( #2d2d2d /*{a-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); +} +.ui-btn-up-a:visited, +.ui-btn-up-a a.ui-link-inherit { + color: #fff /*{a-bup-color}*/; +} +.ui-btn-hover-a { + border: 1px solid #000 /*{a-bhover-border}*/; + background: #444 /*{a-bhover-background-color}*/; + font-weight: bold; + color: #fff /*{a-bhover-color}*/; + text-shadow: 0 /*{a-bhover-shadow-x}*/ 1px /*{a-bhover-shadow-y}*/ 0 /*{a-bhover-shadow-radius}*/ #111 /*{a-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #555 /*{a-bhover-background-start}*/), to( #383838 /*{a-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); +} +.ui-btn-hover-a:visited, +.ui-btn-hover-a:hover, +.ui-btn-hover-a a.ui-link-inherit { + color: #fff /*{a-bhover-color}*/; +} +.ui-btn-down-a { + border: 1px solid #000 /*{a-bdown-border}*/; + background: #222 /*{a-bdown-background-color}*/; + font-weight: bold; + color: #fff /*{a-bdown-color}*/; + text-shadow: 0 /*{a-bdown-shadow-x}*/ 1px /*{a-bdown-shadow-y}*/ 0 /*{a-bdown-shadow-radius}*/ #111 /*{a-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #202020 /*{a-bdown-background-start}*/), to( #2c2c2c /*{a-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); +} +.ui-btn-down-a:visited, +.ui-btn-down-a:hover, +.ui-btn-down-a a.ui-link-inherit { + color: #fff /*{a-bdown-color}*/; +} +.ui-btn-up-a, +.ui-btn-hover-a, +.ui-btn-down-a { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* B +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-b { + border: 1px solid #456f9a /*{b-bar-border}*/; + background: #5e87b0 /*{b-bar-background-color}*/; + color: #fff /*{b-bar-color}*/; + font-weight: bold; + text-shadow: 0 /*{b-bar-shadow-x}*/ 1px /*{b-bar-shadow-y}*/ 0 /*{b-bar-shadow-radius}*/ #3e6790 /*{b-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bar-background-start}*/), to( #497bae /*{b-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); +} +.ui-bar-b, +.ui-bar-b input, +.ui-bar-b select, +.ui-bar-b textarea, +.ui-bar-b button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-b .ui-link-inherit { + color: #fff /*{b-bar-color}*/; +} +.ui-bar-b a.ui-link { + color: #ddf0f8 /*{b-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-b a.ui-link:visited { + color: #ddf0f8 /*{b-bar-link-visited}*/; +} +.ui-bar-b a.ui-link:hover { + color: #ddf0f8 /*{b-bar-link-hover}*/; +} +.ui-bar-b a.ui-link:active { + color: #ddf0f8 /*{b-bar-link-active}*/; +} +.ui-body-b, +.ui-overlay-b { + border: 1px solid #999 /*{b-body-border}*/; + background: #f3f3f3 /*{b-body-background-color}*/; + color: #222 /*{b-body-color}*/; + text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ #fff /*{b-body-shadow-color}*/; + font-weight: normal; + background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{b-body-background-start}*/), to( #ccc /*{b-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); +} +.ui-overlay-b { + background-image: none; + border-width: 0; +} +.ui-body-b, +.ui-body-b input, +.ui-body-b select, +.ui-body-b textarea, +.ui-body-b button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-b .ui-link-inherit { + color: #333 /*{b-body-color}*/; +} +.ui-body-b .ui-link { + color: #2489ce /*{b-body-link-color}*/; + font-weight: bold; +} +.ui-body-b .ui-link:visited { + color: #2489ce /*{b-body-link-visited}*/; +} +.ui-body-b .ui-link:hover { + color: #2489ce /*{b-body-link-hover}*/; +} +.ui-body-b .ui-link:active { + color: #2489ce /*{b-body-link-active}*/; +} +.ui-btn-up-b { + border: 1px solid #044062 /*{b-bup-border}*/; + background: #396b9e /*{b-bup-background-color}*/; + font-weight: bold; + color: #fff /*{b-bup-color}*/; + text-shadow: 0 /*{b-bup-shadow-x}*/ 1px /*{b-bup-shadow-y}*/ 0 /*{b-bup-shadow-radius}*/ #194b7e /*{b-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #5f9cc5 /*{b-bup-background-start}*/), to( #396b9e /*{b-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); +} +.ui-btn-up-b:visited, +.ui-btn-up-b a.ui-link-inherit { + color: #fff /*{b-bup-color}*/; +} +.ui-btn-hover-b { + border: 1px solid #00415e /*{b-bhover-border}*/; + background: #4b88b6 /*{b-bhover-background-color}*/; + font-weight: bold; + color: #fff /*{b-bhover-color}*/; + text-shadow: 0 /*{b-bhover-shadow-x}*/ 1px /*{b-bhover-shadow-y}*/ 0 /*{b-bhover-shadow-radius}*/ #194b7e /*{b-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bhover-background-start}*/), to( #4272a4 /*{b-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); +} +.ui-btn-hover-b:visited, +.ui-btn-hover-b:hover, +.ui-btn-hover-b a.ui-link-inherit { + color: #fff /*{b-bhover-color}*/; +} +.ui-btn-down-b { + border: 1px solid #225377 /*{b-bdown-border}*/; + background: #4e89c5 /*{b-bdown-background-color}*/; + font-weight: bold; + color: #fff /*{b-bdown-color}*/; + text-shadow: 0 /*{b-bdown-shadow-x}*/ 1px /*{b-bdown-shadow-y}*/ 0 /*{b-bdown-shadow-radius}*/ #194b7e /*{b-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #295b8e /*{b-bdown-background-start}*/), to( #3e79b5 /*{b-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); +} +.ui-btn-down-b:visited, +.ui-btn-down-b:hover, +.ui-btn-down-b a.ui-link-inherit { + color: #fff /*{b-bdown-color}*/; +} +.ui-btn-up-b, +.ui-btn-hover-b, +.ui-btn-down-b { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* C +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-c { + border: 1px solid #b3b3b3 /*{c-bar-border}*/; + background: #eee /*{c-bar-background-color}*/; + color: #3e3e3e /*{c-bar-color}*/; + font-weight: bold; + text-shadow: 0 /*{c-bar-shadow-x}*/ 1px /*{c-bar-shadow-y}*/ 0 /*{c-bar-shadow-radius}*/ #fff /*{c-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #f0f0f0 /*{c-bar-background-start}*/), to( #ddd /*{c-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); +} +.ui-bar-c .ui-link-inherit { + color: #3e3e3e /*{c-bar-color}*/; +} +.ui-bar-c a.ui-link { + color: #7cc4e7 /*{c-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-c a.ui-link:visited { + color: #2489ce /*{c-bar-link-visited}*/; +} +.ui-bar-c a.ui-link:hover { + color: #2489ce /*{c-bar-link-hover}*/; +} +.ui-bar-c a.ui-link:active { + color: #2489ce /*{c-bar-link-active}*/; +} +.ui-bar-c, +.ui-bar-c input, +.ui-bar-c select, +.ui-bar-c textarea, +.ui-bar-c button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-c, +.ui-overlay-c { + border: 1px solid #aaa /*{c-body-border}*/; + color: #333 /*{c-body-color}*/; + text-shadow: 0 /*{c-body-shadow-x}*/ 1px /*{c-body-shadow-y}*/ 0 /*{c-body-shadow-radius}*/ #fff /*{c-body-shadow-color}*/; + background: #f9f9f9 /*{c-body-background-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #f9f9f9 /*{c-body-background-start}*/), to( #eee /*{c-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); +} +.ui-overlay-c { + background-image: none; + border-width: 0; +} +.ui-body-c, +.ui-body-c input, +.ui-body-c select, +.ui-body-c textarea, +.ui-body-c button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-c .ui-link-inherit { + color: #333 /*{c-body-color}*/; +} +.ui-body-c .ui-link { + color: #2489ce /*{c-body-link-color}*/; + font-weight: bold; +} +.ui-body-c .ui-link:visited { + color: #2489ce /*{c-body-link-visited}*/; +} +.ui-body-c .ui-link:hover { + color: #2489ce /*{c-body-link-hover}*/; +} +.ui-body-c .ui-link:active { + color: #2489ce /*{c-body-link-active}*/; +} +.ui-btn-up-c { + border: 1px solid #ccc /*{c-bup-border}*/; + background: #eee /*{c-bup-background-color}*/; + font-weight: bold; + color: #222 /*{c-bup-color}*/; + text-shadow: 0 /*{c-bup-shadow-x}*/ 1px /*{c-bup-shadow-y}*/ 0 /*{c-bup-shadow-radius}*/ #fff /*{c-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fff /*{c-bup-background-start}*/), to( #f1f1f1 /*{c-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); +} +.ui-btn-up-c:visited, +.ui-btn-up-c a.ui-link-inherit { + color: #2f3e46 /*{c-bup-color}*/; +} +.ui-btn-hover-c { + border: 1px solid #bbb /*{c-bhover-border}*/; + background: #dfdfdf /*{c-bhover-background-color}*/; + font-weight: bold; + color: #222 /*{c-bhover-color}*/; + text-shadow: 0 /*{c-bhover-shadow-x}*/ 1px /*{c-bhover-shadow-y}*/ 0 /*{c-bhover-shadow-radius}*/ #fff /*{c-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #f6f6f6 /*{c-bhover-background-start}*/), to( #e0e0e0 /*{c-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); +} +.ui-btn-hover-c:visited, +.ui-btn-hover-c:hover, +.ui-btn-hover-c a.ui-link-inherit { + color: #2f3e46 /*{c-bhover-color}*/; +} +.ui-btn-down-c { + border: 1px solid #bbb /*{c-bdown-border}*/; + background: #d6d6d6 /*{c-bdown-background-color}*/; + font-weight: bold; + color: #222 /*{c-bdown-color}*/; + text-shadow: 0 /*{c-bdown-shadow-x}*/ 1px /*{c-bdown-shadow-y}*/ 0 /*{c-bdown-shadow-radius}*/ #fff /*{c-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #d0d0d0 /*{c-bdown-background-start}*/), to( #dfdfdf /*{c-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); +} +.ui-btn-down-c:visited, +.ui-btn-down-c:hover, +.ui-btn-down-c a.ui-link-inherit { + color: #2f3e46 /*{c-bdown-color}*/; +} +.ui-btn-up-c, +.ui-btn-hover-c, +.ui-btn-down-c { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* D +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-d { + border: 1px solid #bbb /*{d-bar-border}*/; + background: #bbb /*{d-bar-background-color}*/; + color: #333 /*{d-bar-color}*/; + font-weight: bold; + text-shadow: 0 /*{d-bar-shadow-x}*/ 1px /*{d-bar-shadow-y}*/ 0 /*{d-bar-shadow-radius}*/ #eee /*{d-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{d-bar-background-start}*/), to( #bbb /*{d-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); +} +.ui-bar-d, +.ui-bar-d input, +.ui-bar-d select, +.ui-bar-d textarea, +.ui-bar-d button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-d .ui-link-inherit { + color: #333 /*{d-bar-color}*/; +} +.ui-bar-d a.ui-link { + color: #2489ce /*{d-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-d a.ui-link:visited { + color: #2489ce /*{d-bar-link-visited}*/; +} +.ui-bar-d a.ui-link:hover { + color: #2489ce /*{d-bar-link-hover}*/; +} +.ui-bar-d a.ui-link:active { + color: #2489ce /*{d-bar-link-active}*/; +} +.ui-body-d, +.ui-overlay-d { + border: 1px solid #bbb /*{d-body-border}*/; + color: #333 /*{d-body-color}*/; + text-shadow: 0 /*{d-body-shadow-x}*/ 1px /*{d-body-shadow-y}*/ 0 /*{d-body-shadow-radius}*/ #fff /*{d-body-shadow-color}*/; + background: #fff /*{d-body-background-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fff /*{d-body-background-start}*/), to( #fff /*{d-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); +} +.ui-overlay-d { + background-image: none; + border-width: 0; +} +.ui-body-d, +.ui-body-d input, +.ui-body-d select, +.ui-body-d textarea, +.ui-body-d button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-d .ui-link-inherit { + color: #333 /*{d-body-color}*/; +} +.ui-body-d .ui-link { + color: #2489ce /*{d-body-link-color}*/; + font-weight: bold; +} +.ui-body-d .ui-link:visited { + color: #2489ce /*{d-body-link-visited}*/; +} +.ui-body-d .ui-link:hover { + color: #2489ce /*{d-body-link-hover}*/; +} +.ui-body-d .ui-link:active { + color: #2489ce /*{d-body-link-active}*/; +} +.ui-btn-up-d { + border: 1px solid #bbb /*{d-bup-border}*/; + background: #fff /*{d-bup-background-color}*/; + font-weight: bold; + color: #333 /*{d-bup-color}*/; + text-shadow: 0 /*{d-bup-shadow-x}*/ 1px /*{d-bup-shadow-y}*/ 0 /*{d-bup-shadow-radius}*/ #fff /*{d-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fafafa /*{d-bup-background-start}*/), to( #f6f6f6 /*{d-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); +} +.ui-btn-up-d:visited, +.ui-btn-up-d a.ui-link-inherit { + color: #333 /*{d-bup-color}*/; +} +.ui-btn-hover-d { + border: 1px solid #aaa /*{d-bhover-border}*/; + background: #eee /*{d-bhover-background-color}*/; + font-weight: bold; + color: #333 /*{d-bhover-color}*/; + cursor: pointer; + text-shadow: 0 /*{d-bhover-shadow-x}*/ 1px /*{d-bhover-shadow-y}*/ 0 /*{d-bhover-shadow-radius}*/ #fff /*{d-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #eee /*{d-bhover-background-start}*/), to( #fff /*{d-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); +} +.ui-btn-hover-d:visited, +.ui-btn-hover-d:hover, +.ui-btn-hover-d a.ui-link-inherit { + color: #333 /*{d-bhover-color}*/; +} +.ui-btn-down-d { + border: 1px solid #aaa /*{d-bdown-border}*/; + background: #eee /*{d-bdown-background-color}*/; + font-weight: bold; + color: #333 /*{d-bdown-color}*/; + text-shadow: 0 /*{d-bdown-shadow-x}*/ 1px /*{d-bdown-shadow-y}*/ 0 /*{d-bdown-shadow-radius}*/ #fff /*{d-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #e5e5e5 /*{d-bdown-background-start}*/), to( #f2f2f2 /*{d-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); +} +.ui-btn-down-d:visited, +.ui-btn-down-d:hover, +.ui-btn-down-d a.ui-link-inherit { + color: #333 /*{d-bdown-color}*/; +} +.ui-btn-up-d, +.ui-btn-hover-d, +.ui-btn-down-d { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* E +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-e { + border: 1px solid #f7c942 /*{e-bar-border}*/; + background: #fadb4e /*{e-bar-background-color}*/; + color: #333 /*{e-bar-color}*/; + font-weight: bold; + text-shadow: 0 /*{e-bar-shadow-x}*/ 1px /*{e-bar-shadow-y}*/ 0 /*{e-bar-shadow-radius}*/ #fff /*{e-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fceda7 /*{e-bar-background-start}*/), to( #fbef7e /*{e-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); +} +.ui-bar-e, +.ui-bar-e input, +.ui-bar-e select, +.ui-bar-e textarea, +.ui-bar-e button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-e .ui-link-inherit { + color: #333 /*{e-bar-color}*/; +} +.ui-bar-e a.ui-link { + color: #2489ce /*{e-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-e a.ui-link:visited { + color: #2489ce /*{e-bar-link-visited}*/; +} +.ui-bar-e a.ui-link:hover { + color: #2489ce /*{e-bar-link-hover}*/; +} +.ui-bar-e a.ui-link:active { + color: #2489ce /*{e-bar-link-active}*/; +} +.ui-body-e, +.ui-overlay-e { + border: 1px solid #f7c942 /*{e-body-border}*/; + color: #222 /*{e-body-color}*/; + text-shadow: 0 /*{e-body-shadow-x}*/ 1px /*{e-body-shadow-y}*/ 0 /*{e-body-shadow-radius}*/ #fff /*{e-body-shadow-color}*/; + background: #fff9df /*{e-body-background-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fffadf /*{e-body-background-start}*/), to( #fff3a5 /*{e-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); +} +.ui-overlay-e { + background-image: none; + border-width: 0; +} +.ui-body-e, +.ui-body-e input, +.ui-body-e select, +.ui-body-e textarea, +.ui-body-e button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-e .ui-link-inherit { + color: #222 /*{e-body-color}*/; +} +.ui-body-e .ui-link { + color: #2489ce /*{e-body-link-color}*/; + font-weight: bold; +} +.ui-body-e .ui-link:visited { + color: #2489ce /*{e-body-link-visited}*/; +} +.ui-body-e .ui-link:hover { + color: #2489ce /*{e-body-link-hover}*/; +} +.ui-body-e .ui-link:active { + color: #2489ce /*{e-body-link-active}*/; +} +.ui-btn-up-e { + border: 1px solid #f4c63f /*{e-bup-border}*/; + background: #fadb4e /*{e-bup-background-color}*/; + font-weight: bold; + color: #222 /*{e-bup-color}*/; + text-shadow: 0 /*{e-bup-shadow-x}*/ 1px /*{e-bup-shadow-y}*/ 0 /*{e-bup-shadow-radius}*/ #fff /*{e-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #ffefaa /*{e-bup-background-start}*/), to( #ffe155 /*{e-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); +} +.ui-btn-up-e:visited, +.ui-btn-up-e a.ui-link-inherit { + color: #222 /*{e-bup-color}*/; +} +.ui-btn-hover-e { + border: 1px solid #f2c43d /*{e-bhover-border}*/; + background: #fbe26f /*{e-bhover-background-color}*/; + font-weight: bold; + color: #111 /*{e-bhover-color}*/; + text-shadow: 0 /*{e-bhover-shadow-x}*/ 1px /*{e-bhover-shadow-y}*/ 0 /*{e-bhover-shadow-radius}*/ #fff /*{e-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fff5ba /*{e-bhover-background-start}*/), to( #fbdd52 /*{e-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); +} +.ui-btn-hover-e:visited, +.ui-btn-hover-e:hover, +.ui-btn-hover-e a.ui-link-inherit { + color: #333 /*{e-bhover-color}*/; +} +.ui-btn-down-e { + border: 1px solid #f2c43d /*{e-bdown-border}*/; + background: #fceda7 /*{e-bdown-background-color}*/; + font-weight: bold; + color: #111 /*{e-bdown-color}*/; + text-shadow: 0 /*{e-bdown-shadow-x}*/ 1px /*{e-bdown-shadow-y}*/ 0 /*{e-bdown-shadow-radius}*/ #fff /*{e-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #f8d94c /*{e-bdown-background-start}*/), to( #fadb4e /*{e-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); +} +.ui-btn-down-e:visited, +.ui-btn-down-e:hover, +.ui-btn-down-e a.ui-link-inherit { + color: #333 /*{e-bdown-color}*/; +} +.ui-btn-up-e, +.ui-btn-hover-e, +.ui-btn-down-e { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* Structure */ +/* links within "buttons" +-----------------------------------------------------------------------------------------------------------*/ +a.ui-link-inherit { + text-decoration: none !important; +} +/* Active class used as the "on" state across all themes +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn-active { + border: 1px solid #2373a5 /*{global-active-border}*/; + background: #5393c5 /*{global-active-background-color}*/; + font-weight: bold; + color: #fff /*{global-active-color}*/; + cursor: pointer; + text-shadow: 0 /*{global-active-shadow-x}*/ 1px /*{global-active-shadow-y}*/ 0 /*{global-active-shadow-radius}*/ #3373a5 /*{global-active-shadow-color}*/; + text-decoration: none; + background-image: -webkit-gradient(linear, left top, left bottom, from( #5393c5 /*{global-active-background-start}*/), to( #6facd5 /*{global-active-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-btn-active:visited, +.ui-btn-active:hover, +.ui-btn-active a.ui-link-inherit { + color: #fff /*{global-active-color}*/; +} +/* button inner top highlight +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn-inner { + border-top: 1px solid #fff; + border-color: rgba(255,255,255,.3); +} +/* corner rounding classes +-----------------------------------------------------------------------------------------------------------*/ +.ui-corner-all { + -webkit-border-radius: .6em /*{global-radii-blocks}*/; + border-radius: .6em /*{global-radii-blocks}*/; +} +/* Form field separator +-----------------------------------------------------------------------------------------------------------*/ +.ui-br { + border-color: rgb(130,130,130); + border-color: rgba(130,130,130,.3); + border-style: solid; +} +/* Interaction cues +-----------------------------------------------------------------------------------------------------------*/ +.ui-disabled { + filter: Alpha(Opacity=30); + opacity: .3; + zoom: 1; +} +.ui-disabled, +.ui-disabled a { + cursor: default !important; + pointer-events: none; +} +/* Icons +-----------------------------------------------------------------------------------------------------------*/ +.ui-icon, +.ui-icon-searchfield:after { + background: #666 /*{global-icon-color}*/; + background: rgba(0,0,0,.4) /*{global-icon-disc}*/; + background-image: url(images/icons-18-white.png) /*{global-icon-set}*/; + background-repeat: no-repeat; + -webkit-border-radius: 9px; + border-radius: 9px; +} +/* Alt icon color +-----------------------------------------------------------------------------------------------------------*/ +.ui-icon-alt .ui-icon, +.ui-icon-alt .ui-icon-searchfield:after { + background-color: #fff; + background-color: rgba(255,255,255,.3); + background-image: url(images/icons-18-black.png); + background-repeat: no-repeat; +} +/* No disc +-----------------------------------------------------------------------------------------------------------*/ +.ui-icon-nodisc .ui-icon, +.ui-icon-nodisc .ui-icon-searchfield:after, +.ui-icon-nodisc .ui-icon-alt .ui-icon, +.ui-icon-nodisc .ui-icon-alt .ui-icon-searchfield:after { + background-color: transparent; +} +/* Icon sprite +-----------------------------------------------------------------------------------------------------------*/ +/* plus minus */ +.ui-icon-plus { + background-position: -1px -1px; +} +.ui-icon-minus { + background-position: -37px -1px; +} +/* delete/close */ +.ui-icon-delete { + background-position: -73px -1px; +} +/* arrows */ +.ui-icon-arrow-r { + background-position: -108px -1px; +} +.ui-icon-arrow-l { + background-position: -144px -1px; +} +.ui-icon-arrow-u { + background-position: -180px -1px; +} +.ui-icon-arrow-d { + background-position: -216px -1px; +} +/* misc */ +.ui-icon-check { + background-position: -252px -1px; +} +.ui-icon-gear { + background-position: -288px -1px; +} +.ui-icon-refresh { + background-position: -323px -1px; +} +.ui-icon-forward { + background-position: -360px -1px; +} +.ui-icon-back { + background-position: -396px -1px; +} +.ui-icon-grid { + background-position: -432px -1px; +} +.ui-icon-star { + background-position: -467px -1px; +} +.ui-icon-alert { + background-position: -503px -1px; +} +.ui-icon-info { + background-position: -539px -1px; +} +.ui-icon-home { + background-position: -575px -1px; +} +/* search */ +.ui-icon-search, +.ui-icon-searchfield:after { + background-position: -611px -1px; +} +/* checkbox radio */ +.ui-icon-checkbox-on { + background-position: -647px -1px; +} +.ui-icon-checkbox-off { + background-position: -683px -1px; +} +.ui-icon-radio-on { + background-position: -718px -1px; +} +.ui-icon-radio-off { + background-position: -754px -1px; +} +/* menu edit */ +.ui-icon-bars { + background-position: -788px -1px; +} +.ui-icon-edit { + background-position: -824px -1px; +} +/* HD/"retina" sprite +-----------------------------------------------------------------------------------------------------------*/ +@media only screen and (-webkit-min-device-pixel-ratio: 1.3), + only screen and (min--moz-device-pixel-ratio: 1.3), + only screen and (min-resolution: 200dpi) { + + .ui-icon-plus, .ui-icon-minus, .ui-icon-delete, .ui-icon-arrow-r, + .ui-icon-arrow-l, .ui-icon-arrow-u, .ui-icon-arrow-d, .ui-icon-check, + .ui-icon-gear, .ui-icon-refresh, .ui-icon-forward, .ui-icon-back, + .ui-icon-grid, .ui-icon-star, .ui-icon-alert, .ui-icon-info, .ui-icon-home, .ui-icon-bars, .ui-icon-edit, + .ui-icon-search, .ui-icon-searchfield:after, + .ui-icon-checkbox-off, .ui-icon-checkbox-on, .ui-icon-radio-off, .ui-icon-radio-on { + background-image: url(images/icons-36-white.png); + -moz-background-size: 864px 18px; + -o-background-size: 864px 18px; + -webkit-background-size: 864px 18px; + background-size: 864px 18px; + } + .ui-icon-alt .ui-icon { + background-image: url(images/icons-36-black.png); + } + .ui-icon-plus { + background-position: 0 50%; + } + .ui-icon-minus { + background-position: -36px 50%; + } + .ui-icon-delete { + background-position: -72px 50%; + } + .ui-icon-arrow-r { + background-position: -108px 50%; + } + .ui-icon-arrow-l { + background-position: -144px 50%; + } + .ui-icon-arrow-u { + background-position: -179px 50%; + } + .ui-icon-arrow-d { + background-position: -215px 50%; + } + .ui-icon-check { + background-position: -252px 50%; + } + .ui-icon-gear { + background-position: -287px 50%; + } + .ui-icon-refresh { + background-position: -323px 50%; + } + .ui-icon-forward { + background-position: -360px 50%; + } + .ui-icon-back { + background-position: -395px 50%; + } + .ui-icon-grid { + background-position: -431px 50%; + } + .ui-icon-star { + background-position: -467px 50%; + } + .ui-icon-alert { + background-position: -503px 50%; + } + .ui-icon-info { + background-position: -538px 50%; + } + .ui-icon-home { + background-position: -575px 50%; + } + .ui-icon-search, + .ui-icon-searchfield:after { + background-position: -611px 50%; + } + .ui-icon-checkbox-on { + background-position: -647px 50%; + } + .ui-icon-checkbox-off { + background-position: -683px 50%; + } + .ui-icon-radio-on { + background-position: -718px 50%; + } + .ui-icon-radio-off { + background-position: -754px 50%; + } + .ui-icon-bars { + background-position: -788px 50%; + + }.ui-icon-edit { + background-position: -824px 50%; + } +} +/* checks,radios */ +.ui-checkbox .ui-icon, +.ui-selectmenu-list .ui-icon { + -webkit-border-radius: 3px; + border-radius: 3px; +} +.ui-icon-checkbox-off, +.ui-icon-radio-off { + background-color: transparent; +} +.ui-checkbox-on .ui-icon, +.ui-radio-on .ui-icon { + background-color: #4596ce /*{global-active-background-color}*/; /* NOTE: this hex should match the active state color. It's repeated here for cascade */ +} +/* loading icon */ +.ui-icon-loading { + background: url(images/ajax-loader.gif); + background-size: 46px 46px; +} +/* Button corner class +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn-corner-all { + -webkit-border-radius: 1em /*{global-radii-buttons}*/; + border-radius: 1em /*{global-radii-buttons}*/; +} +/* radius clip workaround for cleaning up corner trapping */ +.ui-corner-all, +.ui-btn-corner-all { + -webkit-background-clip: padding; + background-clip: padding-box; +} +/* Overlay / modal +-----------------------------------------------------------------------------------------------------------*/ +.ui-overlay { + background: #666; + filter: Alpha(Opacity=50); + opacity: .5; + position: absolute; + width: 100%; + height: 100%; +} +.ui-overlay-shadow { + -moz-box-shadow: 0 0 12px rgba(0,0,0,.6); + -webkit-box-shadow: 0 0 12px rgba(0,0,0,.6); + box-shadow: 0 0 12px rgba(0,0,0,.6); +} +.ui-shadow { + -moz-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/; + -webkit-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/; + box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/ +} +.ui-bar-a .ui-shadow, +.ui-bar-b .ui-shadow , +.ui-bar-c .ui-shadow { + -moz-box-shadow: 0 1px 0 rgba(255,255,255,.3); + -webkit-box-shadow: 0 1px 0 rgba(255,255,255,.3); + box-shadow: 0 1px 0 rgba(255,255,255,.3); +} +.ui-shadow-inset { + -moz-box-shadow: inset 0 1px 4px rgba(0,0,0,.2); + -webkit-box-shadow: inset 0 1px 4px rgba(0,0,0,.2); + box-shadow: inset 0 1px 4px rgba(0,0,0,.2); +} +.ui-icon-shadow { + -moz-box-shadow: 0 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; + -webkit-box-shadow: 0 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; + box-shadow: 0 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; +} +/* Focus state - set here for specificity (note: these classes are added by JavaScript) +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn:focus, .ui-link-inherit:focus { + outline: 0; +} +.ui-btn.ui-focus { + z-index: 1; +} +.ui-focus, +.ui-btn:focus { + -moz-box-shadow: inset 0 0 3px #387bbe /*{global-active-background-color}*/, 0 0 9px #387bbe /*{global-active-background-color}*/; + -webkit-box-shadow: inset 0 0 3px #387bbe /*{global-active-background-color}*/, 0 0 9px #387bbe /*{global-active-background-color}*/; + box-shadow: inset 0 0 3px #387bbe /*{global-active-background-color}*/, 0 0 9px #387bbe /*{global-active-background-color}*/; +} +.ui-input-text.ui-focus, +.ui-input-search.ui-focus { + -moz-box-shadow: 0 0 12px #387bbe /*{global-active-background-color}*/; + -webkit-box-shadow: 0 0 12px #387bbe /*{global-active-background-color}*/; + box-shadow: 0 0 12px #387bbe /*{global-active-background-color}*/; +} +/* unset box shadow in browsers that don't do it right +-----------------------------------------------------------------------------------------------------------*/ +.ui-mobile-nosupport-boxshadow * { + -moz-box-shadow: none !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; +} +/* ...and bring back focus */ +.ui-mobile-nosupport-boxshadow .ui-focus, +.ui-mobile-nosupport-boxshadow .ui-btn:focus, +.ui-mobile-nosupport-boxshadow .ui-link-inherit:focus { + outline-width: 1px; + outline-style: auto; +} +/* some unsets - more probably needed */ +.ui-mobile, .ui-mobile body { height: 99.9%; } +.ui-mobile fieldset, .ui-page { padding: 0; margin: 0; } +.ui-mobile a img, .ui-mobile fieldset { border-width: 0; } +.ui-mobile fieldset { min-width: 0; } +/* responsive page widths */ +.ui-mobile-viewport { margin: 0; overflow-x: visible; -webkit-text-size-adjust: 100%; -ms-text-size-adjust:none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } +/* Issue #2066 */ +body.ui-mobile-viewport, +div.ui-mobile-viewport { overflow-x: hidden; } +/* "page" containers - full-screen views, one should always be in view post-pageload */ +.ui-mobile [data-role=page], .ui-mobile [data-role=dialog], .ui-page { top: 0; left: 0; width: 100%; min-height: 100%; position: absolute; display: none; border: 0; } +.ui-mobile .ui-page-active { display: block; overflow: visible; } +/* on ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */ +.ui-page { outline: none; } +/*orientations from js are available */ +@media screen and (orientation: portrait){ +.ui-mobile .ui-page { min-height: 420px; } +} +@media screen and (orientation: landscape){ +.ui-mobile .ui-page { min-height: 300px; } +} +/* loading screen */ +.ui-loading .ui-loader { display: block; } +.ui-loader { display: none; z-index: 9999999; position: fixed; top: 50%; left: 50%; border:0; } +.ui-loader-default { background: none; filter: Alpha(Opacity=18); opacity: .18; width: 46px; height: 46px; margin-left: -23px; margin-top: -23px; } +.ui-loader-verbose { width: 200px; filter: Alpha(Opacity=88); opacity: .88; box-shadow: 0 1px 1px -1px #fff; height: auto; margin-left: -110px; margin-top: -43px; padding: 10px; } +.ui-loader-default h1 { font-size: 0; width: 0; height: 0; overflow: hidden; } +.ui-loader-verbose h1 { font-size: 16px; margin: 0; text-align: center; } +.ui-loader .ui-icon { background-color: #000; display: block; margin: 0; width: 44px; height: 44px; padding: 1px; -webkit-border-radius: 36px; border-radius: 36px; } +.ui-loader-verbose .ui-icon { margin: 0 auto 10px; filter: Alpha(Opacity=75); opacity: .75; } +.ui-loader-textonly { padding: 15px; margin-left: -115px; } +.ui-loader-textonly .ui-icon { display: none; } +.ui-loader-fakefix { position: absolute; } +/*fouc*/ +.ui-mobile-rendering > * { visibility: hidden; } +/*headers, content panels*/ +.ui-bar, .ui-body { position: relative; padding: .4em 15px; overflow: hidden; display: block; clear:both; } +.ui-bar { font-size: 16px; margin: 0; } +.ui-bar h1, .ui-bar h2, .ui-bar h3, .ui-bar h4, .ui-bar h5, .ui-bar h6 { margin: 0; padding: 0; font-size: 16px; display: inline-block; } +.ui-header, .ui-footer { position: relative; zoom: 1; } +.ui-mobile .ui-header, .ui-mobile .ui-footer { border-left-width: 0; border-right-width: 0; } +.ui-header .ui-btn-left, +.ui-header .ui-btn-right, +.ui-footer .ui-btn-left, +.ui-footer .ui-btn-right, +.ui-header-fixed.ui-fixed-hidden .ui-btn-left, +.ui-header-fixed.ui-fixed-hidden .ui-btn-right { position: absolute; top: 3px; } +.ui-header-fixed .ui-btn-left, +.ui-header-fixed .ui-btn-right { top: 4px;} +.ui-header .ui-btn-left, +.ui-footer .ui-btn-left { left: 5px; } +.ui-header .ui-btn-right, +.ui-footer .ui-btn-right { right: 5px; } +.ui-footer > .ui-btn-icon-notext, +.ui-header > .ui-btn-icon-notext, +.ui-header-fixed.ui-fixed-hidden > .ui-btn-icon-notext { top: 6px; } +.ui-header-fixed > .ui-btn-icon-notext { top: 7px;} +.ui-header .ui-title, .ui-footer .ui-title { min-height: 1.1em; text-align: center; font-size: 16px; display: block; margin: .6em 30% .8em; padding: 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; outline: 0 !important; } +.ui-footer .ui-title { margin: .6em 15px .8em; } +/* content area*/ +.ui-content { border-width: 0; overflow: visible; overflow-x: hidden; padding: 15px; } +/* corner styling for dialogs and popups */ +.ui-corner-all > .ui-header:first-child, +.ui-corner-all > .ui-content:first-child, +.ui-corner-all > .ui-footer:first-child { + -webkit-border-top-left-radius: inherit; + border-top-left-radius: inherit; + -webkit-border-top-right-radius: inherit; + border-top-right-radius: inherit; +} +.ui-corner-all > .ui-header:last-child, +.ui-corner-all > .ui-content:last-child, +.ui-corner-all > .ui-footer:last-child { + -webkit-border-bottom-left-radius: inherit; + border-bottom-left-radius: inherit; + -webkit-border-bottom-right-radius: inherit; + border-bottom-right-radius: inherit; +} +/* icons sizing */ +.ui-icon { width: 18px; height: 18px; } +/* non-js content hiding */ +.ui-nojs { position: absolute; left: -9999px; } +/* accessible content hiding */ +.ui-hide-label label.ui-input-text, .ui-hide-label label.ui-select, .ui-hide-label label.ui-slider, .ui-hide-label label.ui-submit, .ui-hide-label .ui-controlgroup-label, +.ui-hidden-accessible { position: absolute !important; left: -9999px; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } +/* Transitions originally inspired by those from jQtouch, nice work, folks */ +.ui-mobile-viewport-transitioning, +.ui-mobile-viewport-transitioning .ui-page { + width: 100%; + height: 100%; + overflow: hidden; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.ui-page-pre-in { + opacity: 0; +} +.in { + -webkit-animation-timing-function: ease-out; + -webkit-animation-duration: 350ms; + -moz-animation-timing-function: ease-out; + -moz-animation-duration: 350ms; + animation-timing-function: ease-out; + animation-duration: 350ms; +} +.out { + -webkit-animation-timing-function: ease-in; + -webkit-animation-duration: 225ms; + -moz-animation-timing-function: ease-in; + -moz-animation-duration: 225ms; + animation-timing-function: ease-in; + animation-duration: 225ms; +} +@-webkit-keyframes fadein { + from { opacity: 0; } + to { opacity: 1; } +} +@-moz-keyframes fadein { + from { opacity: 0; } + to { opacity: 1; } +} +@keyframes fadein { + from { opacity: 0; } + to { opacity: 1; } +} +@-webkit-keyframes fadeout { + from { opacity: 1; } + to { opacity: 0; } +} +@-moz-keyframes fadeout { + from { opacity: 1; } + to { opacity: 0; } +} +@keyframes fadeout { + from { opacity: 1; } + to { opacity: 0; } +} +.fade.out { + opacity: 0; + -webkit-animation-duration: 125ms; + -webkit-animation-name: fadeout; + -moz-animation-duration: 125ms; + -moz-animation-name: fadeout; + animation-duration: 125ms; + animation-name: fadeout; +} +.fade.in { + opacity: 1; + -webkit-animation-duration: 225ms; + -webkit-animation-name: fadein; + -moz-animation-duration: 225ms; + -moz-animation-name: fadein; + animation-duration: 225ms; + animation-name: fadein; +} +.pop { + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + transform-origin: 50% 50%; +} +.pop.in { + -webkit-transform: scale(1); + -webkit-animation-name: popin; + -webkit-animation-duration: 350ms; + -moz-transform: scale(1); + -moz-animation-name: popin; + -moz-animation-duration: 350ms; + transform: scale(1); + animation-name: popin; + animation-duration: 350ms; + opacity: 1; +} +.pop.out { + -webkit-animation-name: fadeout; + -webkit-animation-duration: 100ms; + -moz-animation-name: fadeout; + -moz-animation-duration: 100ms; + animation-name: fadeout; + animation-duration: 100ms; + opacity: 0; +} +.pop.in.reverse { + -webkit-animation-name: fadein; + -moz-animation-name: fadein; + animation-name: fadein; +} +.pop.out.reverse { + -webkit-transform: scale(.8); + -webkit-animation-name: popout; + -moz-transform: scale(.8); + -moz-animation-name: popout; + transform: scale(.8); + animation-name: popout; +} +@-webkit-keyframes popin { + from { + -webkit-transform: scale(.8); + opacity: 0; + } + to { + -webkit-transform: scale(1); + opacity: 1; + } +} +@-moz-keyframes popin { + from { + -moz-transform: scale(.8); + opacity: 0; + } + to { + -moz-transform: scale(1); + opacity: 1; + } +} +@keyframes popin { + from { + transform: scale(.8); + opacity: 0; + } + to { + transform: scale(1); + opacity: 1; + } +} +@-webkit-keyframes popout { + from { + -webkit-transform: scale(1); + opacity: 1; + } + to { + -webkit-transform: scale(.8); + opacity: 0; + } +} +@-moz-keyframes popout { + from { + -moz-transform: scale(1); + opacity: 1; + } + to { + -moz-transform: scale(.8); + opacity: 0; + } +} +@keyframes popout { + from { + transform: scale(1); + opacity: 1; + } + to { + transform: scale(.8); + opacity: 0; + } +} +/* keyframes for slidein from sides */ +@-webkit-keyframes slideinfromright { + from { -webkit-transform: translate3d(100%,0,0); } + to { -webkit-transform: translate3d(0,0,0); } +} +@-moz-keyframes slideinfromright { + from { -moz-transform: translateX(100%); } + to { -moz-transform: translateX(0); } +} +@keyframes slideinfromright { + from { transform: translateX(100%); } + to { transform: translateX(0); } +} +@-webkit-keyframes slideinfromleft { + from { -webkit-transform: translate3d(-100%,0,0); } + to { -webkit-transform: translate3d(0,0,0); } +} +@-moz-keyframes slideinfromleft { + from { -moz-transform: translateX(-100%); } + to { -moz-transform: translateX(0); } +} +@keyframes slideinfromleft { + from { transform: translateX(-100%); } + to { transform: translateX(0); } +} +/* keyframes for slideout to sides */ +@-webkit-keyframes slideouttoleft { + from { -webkit-transform: translate3d(0,0,0); } + to { -webkit-transform: translate3d(-100%,0,0); } +} +@-moz-keyframes slideouttoleft { + from { -moz-transform: translateX(0); } + to { -moz-transform: translateX(-100%); } +} +@keyframes slideouttoleft { + from { transform: translateX(0); } + to { transform: translateX(-100%); } +} +@-webkit-keyframes slideouttoright { + from { -webkit-transform: translate3d(0,0,0); } + to { -webkit-transform: translate3d(100%,0,0); } +} +@-moz-keyframes slideouttoright { + from { -moz-transform: translateX(0); } + to { -moz-transform: translateX(100%); } +} +@keyframes slideouttoright { + from { transform: translateX(0); } + to { transform: translateX(100%); } +} +.slide.out, .slide.in { + -webkit-animation-timing-function: ease-out; + -webkit-animation-duration: 350ms; + -moz-animation-timing-function: ease-out; + -moz-animation-duration: 350ms; + animation-timing-function: ease-out; + animation-duration: 350ms; +} +.slide.out { + -webkit-transform: translate3d(-100%,0,0); + -webkit-animation-name: slideouttoleft; + -moz-transform: translateX(-100%); + -moz-animation-name: slideouttoleft; + transform: translateX(-100%); + animation-name: slideouttoleft; +} +.slide.in { + -webkit-transform: translate3d(0,0,0); + -webkit-animation-name: slideinfromright; + -moz-transform: translateX(0); + -moz-animation-name: slideinfromright; + transform: translateX(0); + animation-name: slideinfromright; +} +.slide.out.reverse { + -webkit-transform: translate3d(100%,0,0); + -webkit-animation-name: slideouttoright; + -moz-transform: translateX(100%); + -moz-animation-name: slideouttoright; + transform: translateX(100%); + animation-name: slideouttoright; +} +.slide.in.reverse { + -webkit-transform: translate3d(0,0,0); + -webkit-animation-name: slideinfromleft; + -moz-transform: translateX(0); + -moz-animation-name: slideinfromleft; + transform: translateX(0); + animation-name: slideinfromleft; +} +.slidefade.out { + -webkit-transform: translateX(-100%); + -webkit-animation-name: slideouttoleft; + -webkit-animation-duration: 225ms; + -moz-transform: translateX(-100%); + -moz-animation-name: slideouttoleft; + -moz-animation-duration: 225ms; + transform: translateX(-100%); + animation-name: slideouttoleft; + animation-duration: 225ms; +} +.slidefade.in { + -webkit-transform: translateX(0); + -webkit-animation-name: fadein; + -webkit-animation-duration: 200ms; + -moz-transform: translateX(0); + -moz-animation-name: fadein; + -moz-animation-duration: 200ms; + transform: translateX(0); + animation-name: fadein; + animation-duration: 200ms; +} +.slidefade.out.reverse { + -webkit-transform: translateX(100%); + -webkit-animation-name: slideouttoright; + -webkit-animation-duration: 200ms; + -moz-transform: translateX(100%); + -moz-animation-name: slideouttoright; + -moz-animation-duration: 200ms; + transform: translateX(100%); + animation-name: slideouttoright; + animation-duration: 200ms; +} +.slidefade.in.reverse { + -webkit-transform: translateX(0); + -webkit-animation-name: fadein; + -webkit-animation-duration: 200ms; + -moz-transform: translateX(0); + -moz-animation-name: fadein; + -moz-animation-duration: 200ms; + transform: translateX(0); + animation-name: fadein; + animation-duration: 200ms; +} +/* slide down */ +.slidedown.out { + -webkit-animation-name: fadeout; + -webkit-animation-duration: 100ms; + -moz-animation-name: fadeout; + -moz-animation-duration: 100ms; + animation-name: fadeout; + animation-duration: 100ms; +} +.slidedown.in { + -webkit-transform: translateY(0); + -webkit-animation-name: slideinfromtop; + -webkit-animation-duration: 250ms; + -moz-transform: translateY(0); + -moz-animation-name: slideinfromtop; + -moz-animation-duration: 250ms; + transform: translateY(0); + animation-name: slideinfromtop; + animation-duration: 250ms; +} +.slidedown.in.reverse { + -webkit-animation-name: fadein; + -webkit-animation-duration: 150ms; + -moz-animation-name: fadein; + -moz-animation-duration: 150ms; + animation-name: fadein; + animation-duration: 150ms; +} +.slidedown.out.reverse { + -webkit-transform: translateY(-100%); + -webkit-animation-name: slideouttotop; + -webkit-animation-duration: 200ms; + -moz-transform: translateY(-100%); + -moz-animation-name: slideouttotop; + -moz-animation-duration: 200ms; + transform: translateY(-100%); + animation-name: slideouttotop; + animation-duration: 200ms; +} +@-webkit-keyframes slideinfromtop { + from { -webkit-transform: translateY(-100%); } + to { -webkit-transform: translateY(0); } +} +@-moz-keyframes slideinfromtop { + from { -moz-transform: translateY(-100%); } + to { -moz-transform: translateY(0); } +} +@keyframes slideinfromtop { + from { transform: translateY(-100%); } + to { transform: translateY(0); } +} +@-webkit-keyframes slideouttotop { + from { -webkit-transform: translateY(0); } + to { -webkit-transform: translateY(-100%); } +} +@-moz-keyframes slideouttotop { + from { -moz-transform: translateY(0); } + to { -moz-transform: translateY(-100%); } +} +@keyframes slideouttotop { + from { transform: translateY(0); } + to { transform: translateY(-100%); } +} +/* slide up */ +.slideup.out { + -webkit-animation-name: fadeout; + -webkit-animation-duration: 100ms; + -moz-animation-name: fadeout; + -moz-animation-duration: 100ms; + animation-name: fadeout; + animation-duration: 100ms; +} +.slideup.in { + -webkit-transform: translateY(0); + -webkit-animation-name: slideinfrombottom; + -webkit-animation-duration: 250ms; + -moz-transform: translateY(0); + -moz-animation-name: slideinfrombottom; + -moz-animation-duration: 250ms; + transform: translateY(0); + animation-name: slideinfrombottom; + animation-duration: 250ms; +} +.slideup.in.reverse { + -webkit-animation-name: fadein; + -webkit-animation-duration: 150ms; + -moz-animation-name: fadein; + -moz-animation-duration: 150ms; + animation-name: fadein; + animation-duration: 150ms; +} +.slideup.out.reverse { + -webkit-transform: translateY(100%); + -webkit-animation-name: slideouttobottom; + -webkit-animation-duration: 200ms; + -moz-transform: translateY(100%); + -moz-animation-name: slideouttobottom; + -moz-animation-duration: 200ms; + transform: translateY(100%); + animation-name: slideouttobottom; + animation-duration: 200ms; +} +@-webkit-keyframes slideinfrombottom { + from { -webkit-transform: translateY(100%); } + to { -webkit-transform: translateY(0); } +} +@-moz-keyframes slideinfrombottom { + from { -moz-transform: translateY(100%); } + to { -moz-transform: translateY(0); } +} +@keyframes slideinfrombottom { + from { transform: translateY(100%); } + to { transform: translateY(0); } +} +@-webkit-keyframes slideouttobottom { + from { -webkit-transform: translateY(0); } + to { -webkit-transform: translateY(100%); } +} +@-moz-keyframes slideouttobottom { + from { -moz-transform: translateY(0); } + to { -moz-transform: translateY(100%); } +} +@keyframes slideouttobottom { + from { transform: translateY(0); } + to { transform: translateY(100%); } +} +/* The properties in this rule are only necessary for the 'flip' transition. + * We need specify the perspective to create a projection matrix. This will add + * some depth as the element flips. The depth number represents the distance of + * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate + * value. + */ +.viewport-flip { + -webkit-perspective: 1000; + -moz-perspective: 1000; + perspective: 1000; + position: absolute; +} +.flip { + -webkit-backface-visibility: hidden; + -webkit-transform: translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ + -moz-backface-visibility: hidden; + -moz-transform: translateX(0); + backface-visibility: hidden; + transform: translateX(0); +} +.flip.out { + -webkit-transform: rotateY(-90deg) scale(.9); + -webkit-animation-name: flipouttoleft; + -webkit-animation-duration: 175ms; + -moz-transform: rotateY(-90deg) scale(.9); + -moz-animation-name: flipouttoleft; + -moz-animation-duration: 175ms; + transform: rotateY(-90deg) scale(.9); + animation-name: flipouttoleft; + animation-duration: 175ms; +} +.flip.in { + -webkit-animation-name: flipintoright; + -webkit-animation-duration: 225ms; + -moz-animation-name: flipintoright; + -moz-animation-duration: 225ms; + animation-name: flipintoright; + animation-duration: 225ms; +} +.flip.out.reverse { + -webkit-transform: rotateY(90deg) scale(.9); + -webkit-animation-name: flipouttoright; + -moz-transform: rotateY(90deg) scale(.9); + -moz-animation-name: flipouttoright; + transform: rotateY(90deg) scale(.9); + animation-name: flipouttoright; +} +.flip.in.reverse { + -webkit-animation-name: flipintoleft; + -moz-animation-name: flipintoleft; + animation-name: flipintoleft; +} +@-webkit-keyframes flipouttoleft { + from { -webkit-transform: rotateY(0); } + to { -webkit-transform: rotateY(-90deg) scale(.9); } +} +@-moz-keyframes flipouttoleft { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(-90deg) scale(.9); } +} +@keyframes flipouttoleft { + from { transform: rotateY(0); } + to { transform: rotateY(-90deg) scale(.9); } +} +@-webkit-keyframes flipouttoright { + from { -webkit-transform: rotateY(0) ; } + to { -webkit-transform: rotateY(90deg) scale(.9); } +} +@-moz-keyframes flipouttoright { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(90deg) scale(.9); } +} +@keyframes flipouttoright { + from { transform: rotateY(0); } + to { transform: rotateY(90deg) scale(.9); } +} +@-webkit-keyframes flipintoleft { + from { -webkit-transform: rotateY(-90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoleft { + from { -moz-transform: rotateY(-90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +@keyframes flipintoleft { + from { transform: rotateY(-90deg) scale(.9); } + to { transform: rotateY(0); } +} +@-webkit-keyframes flipintoright { + from { -webkit-transform: rotateY(90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoright { + from { -moz-transform: rotateY(90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +@keyframes flipintoright { + from { transform: rotateY(90deg) scale(.9); } + to { transform: rotateY(0); } +} +/* The properties in this rule are only necessary for the 'flip' transition. + * We need specify the perspective to create a projection matrix. This will add + * some depth as the element flips. The depth number represents the distance of + * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate + * value. + */ +.viewport-turn { + -webkit-perspective: 200px; + -moz-perspective: 200px; + -ms-perspective: 200px; + perspective: 200px; + position: absolute; +} +.turn { + -webkit-backface-visibility: hidden; + -webkit-transform: translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ + -webkit-transform-origin: 0; + + -moz-backface-visibility: hidden; + -moz-transform: translateX(0); + -moz-transform-origin: 0; + + backface-visibility :hidden; + transform: translateX(0); + transform-origin: 0; +} +.turn.out { + -webkit-transform: rotateY(-90deg) scale(.9); + -webkit-animation-name: flipouttoleft; + -webkit-animation-duration: 125ms; + -moz-transform: rotateY(-90deg) scale(.9); + -moz-animation-name: flipouttoleft; + -moz-animation-duration: 125ms; + transform: rotateY(-90deg) scale(.9); + animation-name: flipouttoleft; + animation-duration: 125ms; +} +.turn.in { + -webkit-animation-name: flipintoright; + -webkit-animation-duration: 250ms; + -moz-animation-name: flipintoright; + -moz-animation-duration: 250ms; + animation-name: flipintoright; + animation-duration: 250ms; + +} +.turn.out.reverse { + -webkit-transform: rotateY(90deg) scale(.9); + -webkit-animation-name: flipouttoright; + -moz-transform: rotateY(90deg) scale(.9); + -moz-animation-name: flipouttoright; + transform: rotateY(90deg) scale(.9); + animation-name: flipouttoright; +} +.turn.in.reverse { + -webkit-animation-name: flipintoleft; + -moz-animation-name: flipintoleft; + animation-name: flipintoleft; +} +@-webkit-keyframes flipouttoleft { + from { -webkit-transform: rotateY(0); } + to { -webkit-transform: rotateY(-90deg) scale(.9); } +} +@-moz-keyframes flipouttoleft { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(-90deg) scale(.9); } +} +@keyframes flipouttoleft { + from { transform: rotateY(0); } + to { transform: rotateY(-90deg) scale(.9); } +} +@-webkit-keyframes flipouttoright { + from { -webkit-transform: rotateY(0) ; } + to { -webkit-transform: rotateY(90deg) scale(.9); } +} +@-moz-keyframes flipouttoright { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(90deg) scale(.9); } +} +@keyframes flipouttoright { + from { transform: rotateY(0); } + to { transform: rotateY(90deg) scale(.9); } +} +@-webkit-keyframes flipintoleft { + from { -webkit-transform: rotateY(-90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoleft { + from { -moz-transform: rotateY(-90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +@keyframes flipintoleft { + from { transform: rotateY(-90deg) scale(.9); } + to { transform: rotateY(0); } +} +@-webkit-keyframes flipintoright { + from { -webkit-transform: rotateY(90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoright { + from { -moz-transform: rotateY(90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +@keyframes flipintoright { + from { transform: rotateY(90deg) scale(.9); } + to { transform: rotateY(0); } +} +/* flow transition */ +.flow { + -webkit-transform-origin: 50% 30%; + -webkit-box-shadow: 0 0 20px rgba(0,0,0,.4); + -moz-transform-origin: 50% 30%; + -moz-box-shadow: 0 0 20px rgba(0,0,0,.4); + transform-origin: 50% 30%; + box-shadow: 0 0 20px rgba(0,0,0,.4); +} +.ui-dialog.flow { + -webkit-transform-origin: none; + -webkit-box-shadow: none; + -moz-transform-origin: none; + -moz-box-shadow: none; + transform-origin: none; + box-shadow: none; +} +.flow.out { + -webkit-transform: translateX(-100%) scale(.7); + -webkit-animation-name: flowouttoleft; + -webkit-animation-timing-function: ease; + -webkit-animation-duration: 350ms; + -moz-transform: translateX(-100%) scale(.7); + -moz-animation-name: flowouttoleft; + -moz-animation-timing-function: ease; + -moz-animation-duration: 350ms; + transform: translateX(-100%) scale(.7); + animation-name: flowouttoleft; + animation-timing-function: ease; + animation-duration: 350ms; +} +.flow.in { + -webkit-transform: translateX(0) scale(1); + -webkit-animation-name: flowinfromright; + -webkit-animation-timing-function: ease; + -webkit-animation-duration: 350ms; + -moz-transform: translateX(0) scale(1); + -moz-animation-name: flowinfromright; + -moz-animation-timing-function: ease; + -moz-animation-duration: 350ms; + transform: translateX(0) scale(1); + animation-name: flowinfromright; + animation-timing-function: ease; + animation-duration: 350ms; +} +.flow.out.reverse { + -webkit-transform: translateX(100%); + -webkit-animation-name: flowouttoright; + -moz-transform: translateX(100%); + -moz-animation-name: flowouttoright; + transform: translateX(100%); + animation-name: flowouttoright; +} +.flow.in.reverse { + -webkit-animation-name: flowinfromleft; + -moz-animation-name: flowinfromleft; + animation-name: flowinfromleft; +} +@-webkit-keyframes flowouttoleft { + 0% { -webkit-transform: translateX(0) scale(1); } + 60%, 70% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(-100%) scale(.7); } +} +@-moz-keyframes flowouttoleft { + 0% { -moz-transform: translateX(0) scale(1); } + 60%, 70% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(-100%) scale(.7); } +} +@keyframes flowouttoleft { + 0% { transform: translateX(0) scale(1); } + 60%, 70% { transform: translateX(0) scale(.7); } + 100% { transform: translateX(-100%) scale(.7); } +} +@-webkit-keyframes flowouttoright { + 0% { -webkit-transform: translateX(0) scale(1); } + 60%, 70% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(100%) scale(.7); } +} +@-moz-keyframes flowouttoright { + 0% { -moz-transform: translateX(0) scale(1); } + 60%, 70% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(100%) scale(.7); } +} +@keyframes flowouttoright { + 0% { transform: translateX(0) scale(1); } + 60%, 70% { transform: translateX(0) scale(.7); } + 100% { transform: translateX(100%) scale(.7); } +} +@-webkit-keyframes flowinfromleft { + 0% { -webkit-transform: translateX(-100%) scale(.7); } + 30%, 40% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(0) scale(1); } +} +@-moz-keyframes flowinfromleft { + 0% { -moz-transform: translateX(-100%) scale(.7); } + 30%, 40% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(0) scale(1); } +} +@keyframes flowinfromleft { + 0% { transform: translateX(-100%) scale(.7); } + 30%, 40% { transform: translateX(0) scale(.7); } + 100% { transform: translateX(0) scale(1); } +} +@-webkit-keyframes flowinfromright { + 0% { -webkit-transform: translateX(100%) scale(.7); } + 30%, 40% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(0) scale(1); } +} +@-moz-keyframes flowinfromright { + 0% { -moz-transform: translateX(100%) scale(.7); } + 30%, 40% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(0) scale(1); } +} +@keyframes flowinfromright { + 0% { transform: translateX(100%) scale(.7); } + 30%, 40% { transform: translateX(0) scale(.7); } + 100% { transform: translateX(0) scale(1); } +} +/* content configurations. */ +.ui-grid-a, .ui-grid-b, .ui-grid-c, .ui-grid-d { overflow: hidden; } +.ui-block-a, .ui-block-b, .ui-block-c, .ui-block-d, .ui-block-e { margin: 0; padding: 0; border: 0; float: left; min-height: 1px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; } +/* grid solo: 100 - single item fallback */ +.ui-grid-solo .ui-block-a { display: block; float: none; } +/* Lower percentages for older browsers (i.e. IE7) to prevent wrapping. -.5px to fix BB5 wrap issue. */ +/* grid a: 50/50 */ +.ui-grid-a .ui-block-a, .ui-grid-a .ui-block-b { width: 49.95%; } +.ui-grid-a > :nth-child(n) { width: 50%; margin-right: -.5px; } +.ui-grid-a .ui-block-a { clear: left; } +/* grid b: 33/33/33 */ +.ui-grid-b .ui-block-a, .ui-grid-b .ui-block-b, .ui-grid-b .ui-block-c { width: 33.25%; } +.ui-grid-b > :nth-child(n) { width: 33.333%; margin-right: -.5px; } +.ui-grid-b .ui-block-a { clear: left; } +/* grid c: 25/25/25/25 */ +.ui-grid-c .ui-block-a, .ui-grid-c .ui-block-b, .ui-grid-c .ui-block-c, .ui-grid-c .ui-block-d { width: 24.925%; } +.ui-grid-c > :nth-child(n) { width: 25%; margin-right: -.5px; } +.ui-grid-c .ui-block-a { clear: left; } +/* grid d: 20/20/20/20/20 */ +.ui-grid-d .ui-block-a, .ui-grid-d .ui-block-b, .ui-grid-d .ui-block-c, .ui-grid-d .ui-block-d, .ui-grid-d .ui-block-e { width: 19.925%; } +.ui-grid-d > :nth-child(n) { width: 20%; } +.ui-grid-d .ui-block-a { clear: left; } +/* preset breakpoint to switch to stacked grid styles below 35em (560px) */ +@media all and (max-width: 35em) { + .ui-responsive .ui-block-a, + .ui-responsive .ui-block-b, + .ui-responsive .ui-block-c, + .ui-responsive .ui-block-d, + .ui-responsive .ui-block-e { + width: 100%; + float:none; + } +} +/* fixed page header & footer configuration */ +.ui-header-fixed, +.ui-footer-fixed { + left: 0; + right: 0; + width: 100%; + position: fixed; + z-index: 1000; +} +.ui-header-fixed { + top: -1px; + padding-top: 1px; +} +.ui-header-fixed.ui-fixed-hidden { + top: 0; + padding-top: 0; +} +.ui-footer-fixed { + bottom: -1px; + padding-bottom: 1px; +} +.ui-footer-fixed.ui-fixed-hidden { + bottom: 0; + padding-bottom: 0; +} +.ui-header-fullscreen, +.ui-footer-fullscreen { + filter: Alpha(Opacity=90); + opacity: .9; +} +.ui-page-header-fixed { + padding-top: 2.6875em; +} +.ui-page-footer-fixed { + padding-bottom: 2.6875em; +} +.ui-page-header-fullscreen > .ui-content, +.ui-page-footer-fullscreen > .ui-content { + padding: 0; +} +.ui-fixed-hidden { + position: absolute; +} +.ui-page-header-fullscreen .ui-fixed-hidden, +.ui-page-footer-fullscreen .ui-fixed-hidden { + left: -9999px; +} +.ui-header-fixed .ui-btn, +.ui-footer-fixed .ui-btn { + z-index: 10; +} +/* workarounds for other widgets */ +.ui-android-2x-fixed .ui-li-has-thumb { + -webkit-transform: translate3d(0,0,0); +} +.ui-navbar { max-width: 100%; } +.ui-navbar.ui-mini { margin: 0; } +.ui-navbar ul:before, .ui-navbar ul:after { content: " "; display: table; } +.ui-navbar ul:after { clear: both; } +.ui-navbar ul { list-style:none; margin: 0; padding: 0; position: relative; display: block; border: 0; max-width: 100%; overflow: visible; zoom: 1; } +.ui-navbar li .ui-btn { display: block; text-align: center; margin: 0 -1px 0 0; border-right-width: 0; } +.ui-navbar li .ui-btn-icon-right .ui-icon { right: 6px; } +/* add border if not in header/footer (full width) */ +.ui-navbar li:last-child .ui-btn, +.ui-navbar .ui-grid-duo .ui-block-b .ui-btn { margin-right: 0; border-right-width: 1px; } +.ui-header .ui-navbar li:last-child .ui-btn, +.ui-footer .ui-navbar li:last-child .ui-btn, +.ui-header .ui-navbar .ui-grid-duo .ui-block-b .ui-btn, +.ui-footer .ui-navbar .ui-grid-duo .ui-block-b .ui-btn { margin-right: -1px; border-right-width: 0; } +.ui-navbar .ui-grid-duo li.ui-block-a:last-child .ui-btn { margin-right: -1px; border-right-width: 1px; } +.ui-header .ui-navbar li .ui-btn, +.ui-footer .ui-navbar li .ui-btn { border-top-width: 0; border-bottom-width: 0; } +/* fixing gaps caused by subpixel problem */ +.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn, +.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn { margin-right: -5px; } +.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn, +.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn, +.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn, +.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn { margin-right: -4px; } +.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon, +.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon, +.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon, +.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon, +.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon, +.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon { right: 8px; } +.ui-navbar li .ui-btn .ui-btn-inner { padding-top: .7em; padding-bottom: .8em } +.ui-navbar li .ui-btn-icon-top .ui-btn-inner { padding-top: 30px; } +.ui-navbar li .ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 30px; } +.ui-btn { display: block; text-align: center; cursor:pointer; position: relative; margin: .5em 0; padding: 0; } +.ui-mini { margin-top: .25em; margin-bottom: .25em; } +.ui-btn-left, .ui-btn-right, .ui-input-clear, .ui-btn-inline, +.ui-grid-a .ui-btn, .ui-grid-b .ui-btn, .ui-grid-c .ui-btn, .ui-grid-d .ui-btn, .ui-grid-e .ui-btn, .ui-grid-solo .ui-btn { margin-right: 5px; margin-left: 5px; } +.ui-btn-inner { font-size: 16px; padding: .6em 20px; min-width: .75em; display: block; position: relative; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; zoom: 1; } +.ui-btn input, .ui-btn button { z-index: 2; } +.ui-btn-left, .ui-btn-right, .ui-btn-inline { display: inline-block; vertical-align: middle; } +.ui-mobile .ui-btn-left, .ui-mobile .ui-btn-right, .ui-btn-left > .ui-btn, .ui-btn-right > .ui-btn { margin: 0; } /* .ui-mobile to increase specificity level */ +.ui-btn-block { display: block; } +.ui-header > .ui-btn, +.ui-footer > .ui-btn { display: inline-block; margin: 0; } +.ui-header .ui-btn-block, +.ui-footer .ui-btn-block { display: block; } +.ui-header .ui-btn-inner, +.ui-footer .ui-btn-inner, +.ui-mini .ui-btn-inner { font-size: 12.5px; padding: .55em 11px .5em; } +.ui-fullsize .ui-btn-inner, +.ui-fullsize .ui-btn-inner { font-size: 16px; padding: .6em 20px; } +.ui-btn-icon-notext { width: 24px; height: 24px; } +.ui-btn-icon-notext .ui-btn-inner { padding: 0; height: 100%; } +.ui-btn-icon-notext .ui-btn-inner .ui-icon { margin: 2px 1px 2px 3px; float: left; } +.ui-btn-text { position: relative; z-index: 1; width: 100%; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; } +div.ui-btn-text { width: auto; } +.ui-btn-icon-notext .ui-btn-text { position: absolute; left: -9999px; } +.ui-btn-icon-left .ui-btn-inner { padding-left: 40px; } +.ui-btn-icon-right .ui-btn-inner { padding-right: 40px; } +.ui-btn-icon-top .ui-btn-inner { padding-top: 40px; } +.ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 40px; } +.ui-header .ui-btn-icon-left .ui-btn-inner, +.ui-footer .ui-btn-icon-left .ui-btn-inner, +.ui-mini.ui-btn-icon-left .ui-btn-inner, +.ui-mini .ui-btn-icon-left .ui-btn-inner { padding-left: 30px; } +.ui-header .ui-btn-icon-right .ui-btn-inner, +.ui-footer .ui-btn-icon-right .ui-btn-inner, +.ui-mini.ui-btn-icon-right .ui-btn-inner, +.ui-mini .ui-btn-icon-right .ui-btn-inner { padding-right: 30px; } +.ui-header .ui-btn-icon-top .ui-btn-inner, +.ui-footer .ui-btn-icon-top .ui-btn-inner { padding: 30px 3px .5em 3px; } +.ui-mini.ui-btn-icon-top .ui-btn-inner, +.ui-mini .ui-btn-icon-top .ui-btn-inner { padding-top: 30px; } +.ui-header .ui-btn-icon-bottom .ui-btn-inner, +.ui-footer .ui-btn-icon-bottom .ui-btn-inner { padding: .55em 3px 30px 3px; } +.ui-mini.ui-btn-icon-bottom .ui-btn-inner, +.ui-mini .ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 30px; } +/* Corner styling inheritance */ +.ui-btn-inner { + -webkit-border-radius: inherit; + border-radius: inherit; +} +/*btn icon positioning*/ +.ui-btn-icon-notext .ui-icon { display: block; z-index: 0;} +.ui-btn-icon-left > .ui-btn-inner > .ui-icon, .ui-btn-icon-right > .ui-btn-inner > .ui-icon { position: absolute; top: 50%; margin-top: -9px; } +.ui-btn-icon-top .ui-btn-inner .ui-icon, .ui-btn-icon-bottom .ui-btn-inner .ui-icon { position: absolute; left: 50%; margin-left: -9px; } +.ui-btn-icon-left .ui-icon { left: 10px; } +.ui-btn-icon-right .ui-icon { right: 10px; } +.ui-btn-icon-top .ui-icon { top: 10px; } +.ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; } +.ui-header .ui-btn-icon-left .ui-icon, +.ui-footer .ui-btn-icon-left .ui-icon, +.ui-mini.ui-btn-icon-left .ui-icon, +.ui-mini .ui-btn-icon-left .ui-icon { left: 5px; } +.ui-header .ui-btn-icon-right .ui-icon, +.ui-footer .ui-btn-icon-right .ui-icon, +.ui-mini.ui-btn-icon-right .ui-icon, +.ui-mini .ui-btn-icon-right .ui-icon { right: 5px; } +.ui-header .ui-btn-icon-top .ui-icon, +.ui-footer .ui-btn-icon-top .ui-icon, +.ui-mini.ui-btn-icon-top .ui-icon, +.ui-mini .ui-btn-icon-top .ui-icon { top: 5px; } +.ui-header .ui-btn-icon-bottom .ui-icon, +.ui-footer .ui-btn-icon-bottom .ui-icon, +.ui-mini.ui-btn-icon-bottom .ui-icon, +.ui-mini .ui-btn-icon-bottom .ui-icon { bottom: 5px; } +/*hiding native button,inputs */ +.ui-btn-hidden { position: absolute; top: 0; left: 0; width: 100%; height: 100%; -webkit-appearance: none; cursor: pointer; background: #fff; background: rgba(255,255,255,0); filter: Alpha(Opacity=0); opacity: .1; font-size: 1px; border: none; text-indent: -9999px; } +/* Fixes IE/WP filter alpha opacity bugs */ +.ui-disabled .ui-btn-hidden { display: none; } +.ui-disabled { z-index: 1; } +.ui-field-contain .ui-btn.ui-submit { margin: 0; } +label.ui-submit { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } +@media all and (min-width: 28em){ + .ui-field-contain label.ui-submit { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } + .ui-field-contain .ui-btn.ui-submit { width: 78%; display: inline-block; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; } + .ui-hide-label .ui-btn.ui-submit { width: auto; display: block; } +} +.ui-collapsible-inset { margin: .5em 0; } +.ui-collapsible-heading { font-size: 16px; display: block; margin: 0 -15px; padding: 0; position: relative; } +.ui-collapsible-inset .ui-collapsible-heading { margin: 0; } +.ui-collapsible-heading .ui-btn { text-align: left; margin: 0; border-left-width: 0; border-right-width: 0; } +.ui-collapsible-inset .ui-collapsible-heading .ui-btn { border-right-width: 1px; border-left-width: 1px; } +.ui-collapsible-collapsed + .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn { border-top-width: 0; } +.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn { border-top-width: 1px; } +.ui-collapsible-heading .ui-btn-inner { padding-left: 12px; padding-right: 12px; } +.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner { padding-left: 40px; } +.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner { padding-right: 40px; } +.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner, +.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner { text-align: center; } +.ui-collapsible-heading .ui-btn-icon-left.ui-mini .ui-btn-inner { padding-left: 30px; } +.ui-collapsible-heading .ui-btn-icon-right.ui-mini .ui-btn-inner { padding-right: 30px; } +.ui-collapsible-heading .ui-btn span.ui-btn { position: absolute; left: 6px; top: 50%; margin: -12px 0 0 0; width: 20px; height: 20px; padding: 1px 0 1px 2px; text-indent: -9999px; } +.ui-collapsible-heading .ui-btn span.ui-btn .ui-btn-inner { padding: 10px 0; } +.ui-collapsible-heading .ui-btn span.ui-btn .ui-icon { left: 0; margin-top: -10px; } +.ui-collapsible-heading-status { position: absolute; top: -9999px; left: 0; } +.ui-collapsible-content { + display: block; + margin: 0 -15px; + padding: 10px 15px; + border-left-width: 0; + border-right-width: 0; + border-top: none; /* Overrides ui-body-* */ + background-image: none; /* Overrides ui-body-* */ +} +.ui-collapsible-inset .ui-collapsible-content { margin: 0; border-right-width: 1px; border-left-width: 1px; } +.ui-collapsible-content-collapsed { display: none; } +.ui-collapsible-set > .ui-collapsible.ui-corner-all { + -webkit-border-radius: 0; + border-radius: 0; +} +.ui-collapsible-heading, +.ui-collapsible-heading > .ui-btn { + -webkit-border-radius: inherit; + border-radius: inherit; +} +.ui-collapsible-set .ui-collapsible.ui-first-child { + -webkit-border-top-right-radius: inherit; + border-top-right-radius: inherit; + -webkit-border-top-left-radius: inherit; + border-top-left-radius: inherit; +} +.ui-collapsible-content, +.ui-collapsible-set .ui-collapsible.ui-last-child { + -webkit-border-bottom-right-radius: inherit; + border-bottom-right-radius: inherit; + -webkit-border-bottom-left-radius: inherit; + border-bottom-left-radius: inherit; +} +.ui-collapsible-themed-content:not(.ui-collapsible-collapsed) > .ui-collapsible-heading { + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; +} +.ui-collapsible-set { margin: .5em 0; } +.ui-collapsible-set .ui-collapsible { margin: -1px 0 0; } +.ui-collapsible-set .ui-collapsible.ui-first-child { margin-top: 0; } +.ui-controlgroup, fieldset.ui-controlgroup { padding: 0; margin: .5em 0; zoom: 1; } +.ui-controlgroup.ui-mini, fieldset.ui-controlgroup.ui-mini { margin: .25em 0; } +.ui-field-contain .ui-controlgroup, .ui-field-contain fieldset.ui-controlgroup { margin: 0; } +.ui-bar .ui-controlgroup { margin: 0 5px; } +.ui-controlgroup-label { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .4em; } +/* Fixes legend not wrapping on IE10 */ +.ui-controlgroup-label legend { max-width: 100%; } +.ui-controlgroup-controls label.ui-select, +.ui-controlgroup-controls label.ui-submit { position: absolute; left: -9999px; } +.ui-controlgroup li { list-style: none; } +.ui-controlgroup .ui-btn { margin: 0; } +.ui-controlgroup .ui-btn-icon-notext { width: auto; height: auto; top: auto; } +.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { height: 20px; padding: .6em 20px .6em 20px } +.ui-controlgroup-horizontal .ui-btn-icon-notext .ui-btn-inner { width: 18px; } +.ui-controlgroup.ui-mini .ui-btn-icon-notext .ui-btn-inner, +.ui-header .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner, +.ui-footer .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { height: 16px; padding: .55em 11px .5em 11px; } +.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner .ui-icon { position: absolute; top: 50%; right: 50%; margin: -9px -9px 0 0; } +.ui-controlgroup-horizontal .ui-btn-inner { text-align: center; } +.ui-controlgroup-horizontal.ui-mini .ui-btn-inner { height: 16px; line-height: 16px; } +.ui-controlgroup .ui-checkbox label, .ui-controlgroup .ui-radio label { font-size: 16px; } +.ui-controlgroup-horizontal .ui-controlgroup-controls:before, +.ui-controlgroup-horizontal .ui-controlgroup-controls:after { content: ""; display: table; } +.ui-controlgroup-horizontal .ui-controlgroup-controls:after { clear: both; } +.ui-controlgroup-horizontal .ui-controlgroup-controls { display: inline-block; vertical-align: middle; zoom: 1; } +.ui-controlgroup-horizontal .ui-controlgroup-controls > .ui-btn, .ui-controlgroup-horizontal .ui-controlgroup-controls li > .ui-btn, +.ui-controlgroup-horizontal .ui-checkbox, .ui-controlgroup-horizontal .ui-radio, +.ui-controlgroup-horizontal .ui-select { float: left; clear: none; margin: 0; } +/* On IE7 the floating selects will be displayed as block if .ui-btn-text has width 100% */ +.ui-controlgroup-horizontal .ui-select .ui-btn-text { width: auto; } +.ui-controlgroup-vertical .ui-btn { border-bottom-width: 0; } +.ui-controlgroup-vertical .ui-btn.ui-last-child { border-bottom-width: 1px; } +.ui-controlgroup-horizontal .ui-btn { border-right-width: 0; } +.ui-controlgroup-horizontal .ui-btn.ui-last-child { border-right-width: 1px; } +.ui-controlgroup .ui-btn-corner-all { + -webkit-border-radius: 0; + border-radius: 0; +} +.ui-controlgroup .ui-controlgroup-controls, +.ui-controlgroup .ui-radio, +.ui-controlgroup .ui-checkbox, +.ui-controlgroup .ui-select, +.ui-controlgroup li { + -webkit-border-radius: inherit; + border-radius: inherit; +} +.ui-controlgroup-vertical .ui-btn.ui-first-child { + -webkit-border-top-left-radius: inherit; + border-top-left-radius: inherit; + -webkit-border-top-right-radius: inherit; + border-top-right-radius: inherit; +} +.ui-controlgroup-vertical .ui-btn.ui-last-child { + -webkit-border-bottom-left-radius: inherit; + border-bottom-left-radius: inherit; + -webkit-border-bottom-right-radius: inherit; + border-bottom-right-radius: inherit; +} +.ui-controlgroup-horizontal .ui-btn.ui-first-child { + -webkit-border-top-left-radius: inherit; + border-top-left-radius: inherit; + -webkit-border-bottom-left-radius: inherit; + border-bottom-left-radius: inherit; +} +.ui-controlgroup-horizontal .ui-btn.ui-last-child { + -webkit-border-top-right-radius: inherit; + border-top-right-radius: inherit; + -webkit-border-bottom-right-radius: inherit; + border-bottom-right-radius: inherit; +} +.ui-controlgroup .ui-shadow:not(.ui-focus) { + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} +@media all and (min-width: 28em){ + .ui-field-contain .ui-controlgroup-label { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } + .ui-field-contain .ui-controlgroup-controls { width: 78%; display: inline-block; } + .ui-field-contain .ui-controlgroup .ui-select { width: 100%; display: block; } + .ui-field-contain .ui-controlgroup-horizontal .ui-select { width: auto; } + .ui-hide-label .ui-controlgroup-controls { width: 100%; } +} +.ui-dialog { + background: none !important; /* this is to ensure that dialog theming does not apply (by default at least) on the page div */ +} +.ui-dialog-contain { + width: 92.5%; + max-width: 500px; + margin: 10% auto 15px auto; + padding: 0; + position: relative; + top: -15px; +} +.ui-dialog-contain > .ui-header, +.ui-dialog-contain > .ui-content, +.ui-dialog-contain > .ui-footer { + display: block; + position: relative; + width: auto; + margin: 0; +} +.ui-dialog-contain > .ui-header { + border: none; + overflow: hidden; + z-index: 10; + padding: 0; +} +.ui-dialog-contain > .ui-content { + padding: 15px; +} +.ui-dialog-contain > .ui-footer { + z-index: 10; + padding: 0 15px; +} +.ui-popup-open .ui-header-fixed, +.ui-popup-open .ui-footer-fixed { + position: absolute !important; /* See line #553 of popup.js */ +} +.ui-popup-screen { + background-image: url(data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==); /* Necessary to set some form of background to ensure element is clickable in IE6/7. While legacy IE won't understand the data-URI'd image, it ensures no additional requests occur in all other browsers with little overhead. */ + top: 0; + left: 0; + right: 0; + bottom: 1px; + position: absolute; + filter: Alpha(Opacity=0); + opacity: 0; + z-index: 1099; +} +.ui-popup-screen.in { + opacity: 0.5; + filter: Alpha(Opacity=50); +} +.ui-popup-screen.out { + opacity: 0; + filter: Alpha(Opacity=0); +} +.ui-popup-container { + z-index: 1100; + display: inline-block; + position: absolute; + padding: 0; + outline: 0; +} +.ui-popup { + position: relative; +} +.ui-popup.ui-content, +.ui-popup .ui-content { + overflow: visible; +} +.ui-popup > p, +.ui-popup > h1, +.ui-popup > h2, +.ui-popup > h3, +.ui-popup > h4, +.ui-popup > h5, +.ui-popup > h6 { + margin: .5em 7px; +} +.ui-popup > span { + display: block; + margin: .5em 7px; +} +.ui-popup .ui-title { + font-size: 16px; + font-weight: bold; + margin-top: .5em; + margin-bottom: .5em; +} +.ui-popup-container .ui-content > p, +.ui-popup-container .ui-content > h1, +.ui-popup-container .ui-content > h2, +.ui-popup-container .ui-content > h3, +.ui-popup-container .ui-content > h4, +.ui-popup-container .ui-content > h5, +.ui-popup-container .ui-content > h6 { + margin: .5em 0; +} +.ui-popup-container .ui-content > span { + margin: 0; +} +.ui-popup-container .ui-content > p:first-child, +.ui-popup-container .ui-content > h1:first-child, +.ui-popup-container .ui-content > h2:first-child, +.ui-popup-container .ui-content > h3:first-child, +.ui-popup-container .ui-content > h4:first-child, +.ui-popup-container .ui-content > h5:first-child, +.ui-popup-container .ui-content > h6:first-child { + margin-top: 0; +} +.ui-popup-container .ui-content > p:last-child, +.ui-popup-container .ui-content > h1:last-child, +.ui-popup-container .ui-content > h2:last-child, +.ui-popup-container .ui-content > h3:last-child, +.ui-popup-container .ui-content > h4:last-child, +.ui-popup-container .ui-content > h5:last-child, +.ui-popup-container .ui-content > h6:last-child { + margin-bottom: 0; +} +.ui-popup > img { + width: auto; + height: auto; + max-width: 100%; + max-height: 100%; + vertical-align: middle; +} +.ui-popup:not(.ui-content) > img:only-child, +.ui-popup:not(.ui-content) > .ui-btn-left:first-child + img:last-child, +.ui-popup:not(.ui-content) > .ui-btn-right:first-child + img:last-child { + -webkit-border-radius: inherit; + border-radius: inherit; +} +.ui-popup iframe { + vertical-align: middle; +} +@media all and (min-width: 28em){ + .ui-popup .ui-field-contain label.ui-submit, + .ui-popup .ui-field-contain .ui-controlgroup-label, + .ui-popup .ui-field-contain label.ui-select, + .ui-popup .ui-field-contain label.ui-input-text { + font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em; + } + .ui-popup .ui-field-contain .ui-btn.ui-submit, + .ui-popup .ui-field-contain .ui-controlgroup-controls, + .ui-popup .ui-field-contain .ui-select, + .ui-popup .ui-field-contain input.ui-input-text, + .ui-popup .ui-field-contain textarea.ui-input-text, + .ui-popup .ui-field-contain .ui-input-search { + width: 100%; display: block; + } +} +.ui-popup > .ui-btn-left, +.ui-popup > .ui-btn-right { + position: absolute; + top: -9px; + margin: 0; + z-index: 1101; +} +.ui-popup > .ui-btn-left { left: -9px; } +.ui-popup > .ui-btn-right { right: -9px; } +.ui-popup-hidden { top: -99999px; left: -9999px; visibility: hidden; } +.ui-checkbox, .ui-radio { position: relative; clear: both; margin: 0; z-index: 1; } +.ui-checkbox .ui-btn, .ui-radio .ui-btn { text-align: left; z-index: 2; } +.ui-controlgroup .ui-checkbox .ui-btn, .ui-controlgroup .ui-radio .ui-btn { margin: 0; } +.ui-checkbox .ui-btn-inner, .ui-radio .ui-btn-inner { white-space: normal; } +.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner { padding-left: 45px; } +.ui-checkbox .ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-left .ui-btn-inner { padding-left: 36px; } +.ui-checkbox .ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 36px; } +.ui-checkbox .ui-btn-icon-top .ui-btn-inner, .ui-radio .ui-btn-icon-top .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; } +.ui-checkbox .ui-btn-icon-bottom .ui-btn-inner, .ui-radio .ui-btn-icon-bottom .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; } +.ui-checkbox .ui-icon, .ui-radio .ui-icon { top: 1.1em; } +.ui-checkbox .ui-btn-icon-left .ui-icon, .ui-radio .ui-btn-icon-left .ui-icon { left: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-left .ui-icon, .ui-radio .ui-mini.ui-btn-icon-left .ui-icon { left: 9px; } +.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; } +.ui-checkbox .ui-btn-icon-top .ui-icon, .ui-radio .ui-btn-icon-top .ui-icon { top: 10px; } +.ui-checkbox .ui-btn-icon-bottom .ui-icon, .ui-radio .ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; } +.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; } +.ui-controlgroup-horizontal .ui-checkbox .ui-icon, +.ui-controlgroup-horizontal .ui-radio .ui-icon { display: none; } +.ui-controlgroup-horizontal .ui-checkbox .ui-btn-inner, +.ui-controlgroup-horizontal .ui-radio .ui-btn-inner { padding: .6em 20px; } +.ui-controlgroup-horizontal .ui-checkbox .ui-mini .ui-btn-inner, +.ui-controlgroup-horizontal .ui-radio .ui-mini .ui-btn-inner { padding: .55em 11px .5em; } +/* input, label positioning */ +.ui-checkbox input,.ui-radio input { position:absolute; left:20px; top:50%; width: 10px; height: 10px; margin:-5px 0 0 0; outline: 0 !important; z-index: 1; } +.ui-field-contain, fieldset.ui-field-contain { padding: .8em 0; margin: 0; border-width: 0 0 1px 0; overflow: visible; } +.ui-field-contain:last-child { border-bottom-width: 0; } +.ui-field-contain { max-width: 100%; } /* This prevents horizontal scrollbar in IE7 */ +@media all and (min-width: 28em){ + .ui-field-contain, .ui-mobile fieldset.ui-field-contain { border-width: 0; padding: 0; margin: 1em 0; } +} +.ui-select { display: block; position: relative; } +.ui-select select { position: absolute; left: -9999px; top: -9999px; } +.ui-select .ui-btn { opacity: 1; } +.ui-field-contain .ui-select .ui-btn { margin: 0; } +/* Fixes #2588: When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select (including "inherit") without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */ +.ui-select .ui-btn select { cursor: pointer; -webkit-appearance: none; left: 0; top:0; width: 100%; min-height: 1.5em; min-height: 100%; height: 3em; max-height: 100%; filter: Alpha(Opacity=0); opacity: 0; z-index: 2; } +.ui-select .ui-disabled { opacity: .3; } +/* Display none because of issues with IE/WP's filter alpha opacity */ +.ui-select .ui-disabled select { display: none; } +@-moz-document url-prefix() { .ui-select .ui-btn select { opacity: 0.0001; }} +.ui-select .ui-btn.ui-select-nativeonly { border-radius: 0; border: 0; } +.ui-select .ui-btn.ui-select-nativeonly select { opacity: 1; text-indent: 0; display: block; } +.ui-select .ui-disabled.ui-select-nativeonly .ui-btn-inner { opacity: 0; } +.ui-select .ui-btn-icon-right .ui-btn-inner, .ui-select .ui-li-has-count .ui-btn-inner { padding-right: 45px; } +.ui-select .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 32px; } +.ui-select .ui-btn-icon-right.ui-li-has-count .ui-btn-inner { padding-right: 80px; } +.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-btn-inner { padding-right: 67px; } +.ui-select .ui-btn-icon-right .ui-icon { right: 15px; } +.ui-select .ui-mini.ui-btn-icon-right .ui-icon { right: 7px; } +.ui-select .ui-btn-icon-right.ui-li-has-count .ui-li-count { right: 45px; } +.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-li-count { right: 32px; } +/* labels */ +label.ui-select { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } +/*listbox*/ +.ui-select .ui-btn-text, .ui-selectmenu .ui-btn-text { display: block; min-height: 1em; overflow: hidden !important; +/* This !important is required for iPad Safari specifically. See https://github.com/jquery/jquery-mobile/issues/2647 */ } +.ui-select .ui-btn-text { text-overflow: ellipsis; } +.ui-selectmenu { padding: 6px; min-width: 160px; } +.ui-selectmenu .ui-listview { margin: 0; } +.ui-selectmenu .ui-btn.ui-li-divider { cursor: default; } +.ui-screen-hidden, .ui-selectmenu-list .ui-li .ui-icon { display: none; } +.ui-selectmenu-list .ui-li .ui-icon { display: block; } +.ui-li.ui-selectmenu-placeholder { display: none; } +.ui-selectmenu .ui-header { margin: 0; padding: 0; } +.ui-selectmenu.ui-popup .ui-header { -webkit-border-top-left-radius: 0; border-top-left-radius: 0; -webkit-border-top-right-radius: 0; border-top-right-radius: 0; } +.ui-selectmenu .ui-header .ui-title { margin: 0.6em 46px 0.8em; } +@media all and (min-width: 28em){ + .ui-field-contain label.ui-select { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } + .ui-field-contain .ui-select { width: 78%; display: inline-block; } + .ui-hide-label .ui-select { width: 100%; } +} +/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button. this shim's content in there */ +.ui-selectmenu .ui-header h1:after { content: '.'; visibility: hidden; } +label.ui-input-text { font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em; } +input.ui-input-text, textarea.ui-input-text { background-image: none; padding: .4em; margin: .5em 0; min-height: 1.4em; line-height: 1.4em; font-size: 16px; display: block; width: 100%; outline: 0; } +input.ui-mini, .ui-mini input, textarea.ui-mini { font-size: 14px; } +div.ui-input-text input.ui-input-text, div.ui-input-text textarea.ui-input-text, +.ui-input-search input.ui-input-text { border: none; width: 100%; padding: .4em 0; margin: 0; display: block; background: transparent none; outline: 0 !important; } +.ui-input-search, div.ui-input-text { margin: .5em 0; background-image: none; position: relative; } +.ui-input-search { padding: 0 30px; } +div.ui-input-text { padding: 0 .4em; } +div.ui-input-has-clear { padding: 0 30px 0 .4em; } +input.ui-input-text.ui-mini, textarea.ui-input-text.ui-mini, +.ui-input-search.ui-mini, div.ui-input-text.ui-mini { margin: .25em 0; } +.ui-field-contain input.ui-input-text, .ui-field-contain textarea.ui-input-text, +.ui-field-contain .ui-input-search, .ui-field-contain div.ui-input-text { margin: 0; } +textarea.ui-input-text { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; } +input.ui-input-text { -webkit-appearance: none; } +textarea.ui-input-text { height: 50px; -webkit-transition: height 200ms linear; -moz-transition: height 200ms linear; -o-transition: height 200ms linear; transition: height 200ms linear; } +textarea.ui-mini { height: 45px; } +.ui-icon-searchfield:after { position: absolute; left: 7px; top: 50%; margin-top: -9px; content: ""; width: 18px; height: 18px; opacity: .5; } +.ui-input-search .ui-input-clear, .ui-input-text .ui-input-clear { position: absolute; right: 0; top: 50%; margin-top: -13px; } +.ui-mini .ui-input-clear { right: -3px; } +.ui-input-search .ui-input-clear-hidden, .ui-input-text .ui-input-clear-hidden { display: none; } +/* Resolves issue #5166: Added to support issue introduced in Firefox 15. We can likely remove this in the future. */ +input::-moz-placeholder, textarea::-moz-placeholder { color: #aaa; } +/* For IE10 */ +:-ms-input-placeholder { color: #aaa; } +/* Resolves issue #5131: Width of textinput depends on its type, for Android 4.1 */ +input[type=number]::-webkit-outer-spin-button { margin: 0; } +@media all and (min-width: 28em){ + .ui-field-contain label.ui-input-text { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0 } + .ui-field-contain input.ui-input-text, + .ui-field-contain textarea.ui-input-text, + .ui-field-contain .ui-input-search, + .ui-field-contain div.ui-input-text { width: 78%; display: inline-block; } + .ui-field-contain .ui-input-search, + .ui-field-contain div.ui-input-text { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; } + .ui-hide-label input.ui-input-text, + .ui-hide-label textarea.ui-input-text, + .ui-hide-label .ui-input-search, + .ui-hide-label div.ui-input-text, + .ui-input-search input.ui-input-text, + div.ui-input-text input.ui-input-text { width: 100%; } +} +.ui-rangeslider { + zoom: 1; + margin: 0; +} +.ui-rangeslider:before, +.ui-rangeslider:after { + content: ""; + display: table; +} +.ui-rangeslider:after { + clear: both; +} +/* Margin-top/bottom: .5em * 16px/14px to make it equal to ui-rangeslider-sliders margin (input font-size is 14px) */ +.ui-rangeslider input.ui-input-text.ui-slider-input { + margin: .57143em 0; +} +.ui-rangeslider.ui-mini input.ui-slider-input { + margin: .28571em 0; +} +.ui-rangeslider input.ui-slider-input.ui-rangeslider-last { + float: right; +} +.ui-rangeslider .ui-rangeslider-sliders { + position: relative; + overflow: visible; + height: 30px; + margin: .5em 68px; +} +.ui-rangeslider.ui-mini .ui-rangeslider-sliders { + margin: .25em 68px; +} +.ui-field-contain .ui-rangeslider input.ui-slider-input, +.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input, +.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders, +.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders { + margin-top: 0; + margin-bottom: 0; +} +.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track { + position: absolute; + top: 6px; + right: 0; + left: 0; + margin: 0; +} +.ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track { + top: 8px; +} +.ui-rangeslider .ui-slider-track:first-child .ui-slider-bg { + display: none; +} +.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child { + background-color: transparent; + background: none; + border-width: 0; + height: 0; +} +/* this makes ie6 and ie7 set height to 0 to fix z-index problem */ +html >/**/body .ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child { + height: 15px; + border-width: 1px; +} +html >/**/body .ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track:first-child { + height: 12px; +} +@media all and (min-width: 28em){ + .ui-field-contain .ui-rangeslider label.ui-slider { + float: left; + } + .ui-field-contain .ui-rangeslider input.ui-slider-input { + position: relative; + z-index: 1; + } + .ui-field-contain .ui-rangeslider input.ui-slider-input.ui-rangeslider-first, + .ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input.ui-rangeslider-first { + margin-right: 17px; + } + .ui-field-contain .ui-rangeslider .ui-rangeslider-sliders, + .ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders { + float: left; + width: 78%; + margin: 0 -68px; + } + .ui-field-contain .ui-rangeslider .ui-slider-track, + .ui-field-contain .ui-rangeslider.ui-mini .ui-slider-track { + right: 68px; + left: 68px; + } + .ui-field-contain.ui-hide-label .ui-rangeslider input.ui-slider-input.ui-rangeslider-first { + margin: 0; + } + .ui-field-contain.ui-hide-label .ui-rangeslider .ui-rangeslider-sliders, + .ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-rangeslider-sliders { + width: auto; + float: none; + margin: 0 68px; + } + .ui-field-contain.ui-hide-label .ui-rangeslider .ui-slider-track, + .ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-slider-track { + right: 0; + left: 0; + } +} +.ui-listview { margin: 0; } +ol.ui-listview, ol.ui-listview .ui-li-divider { counter-reset: listnumbering; } +.ui-content .ui-listview, .ui-panel-inner > .ui-listview { margin: -15px; } +.ui-collapsible-content > .ui-listview { margin: -10px -15px; } +.ui-content .ui-listview-inset, .ui-panel-inner .ui-listview-inset { margin: 1em 0; } +.ui-collapsible-content .ui-listview-inset { margin: .5em 0; } +.ui-listview, .ui-li { list-style: none; padding: 0; } +.ui-li, .ui-li.ui-field-contain { display: block; margin: 0; position: relative; overflow: visible; text-align: left; border-width: 0; border-top-width: 1px; } +.ui-li.ui-btn, .ui-li.ui-field-contain, .ui-li-divider, .ui-li-static { margin: 0; } +.ui-listview-inset .ui-li { border-right-width: 1px; border-left-width: 1px; } +.ui-li.ui-last-child, .ui-li.ui-field-contain.ui-last-child { border-bottom-width: 1px; } +.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) > .ui-li.ui-first-child { border-top-width: 0; } +.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset) > .ui-li.ui-last-child { border-bottom-width: 0; } +.ui-li .ui-btn-text a.ui-link-inherit { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } +.ui-li-static { background-image: none; } +.ui-li-divider { padding: .5em 15px; font-size: 14px; font-weight: bold; } +ol.ui-listview .ui-link-inherit:before, ol.ui-listview .ui-li-static:before, .ui-li-dec { font-size: .8em; display: inline-block; padding-right: .3em; font-weight: normal; counter-increment: listnumbering; content: counter(listnumbering) ". "; } +ol.ui-listview .ui-li-jsnumbering:before { content: "" !important; } /* to avoid chance of duplication */ +.ui-listview .ui-li > .ui-btn-text { + -webkit-border-radius: inherit; + border-radius: inherit; +} +.ui-listview > .ui-li.ui-first-child, +.ui-listview .ui-btn.ui-first-child > .ui-li > .ui-btn-text > .ui-link-inherit { + -webkit-border-top-right-radius: inherit; + border-top-right-radius: inherit; + -webkit-border-top-left-radius: inherit; + border-top-left-radius: inherit; +} +.ui-listview > .ui-li.ui-last-child, +.ui-listview .ui-btn.ui-last-child > .ui-li > .ui-btn-text > .ui-link-inherit, +.ui-collapsible-content > .ui-listview:not(.ui-listview-inset), +.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) .ui-li.ui-last-child { + -webkit-border-bottom-right-radius: inherit; + border-bottom-right-radius: inherit; + -webkit-border-bottom-left-radius: inherit; + border-bottom-left-radius: inherit; +} +.ui-listview > .ui-li.ui-first-child .ui-li-link-alt { + -webkit-border-top-right-radius: inherit; + border-top-right-radius: inherit; +} +.ui-listview > .ui-li.ui-last-child .ui-li-link-alt { + -webkit-border-bottom-right-radius: inherit; + border-bottom-right-radius: inherit; +} +.ui-listview > .ui-li.ui-first-child .ui-li-thumb:not(.ui-li-icon) { + -webkit-border-top-left-radius: inherit; + border-top-left-radius: inherit; +} +.ui-listview > .ui-li.ui-last-child .ui-li-thumb:not(.ui-li-icon) { + -webkit-border-bottom-left-radius: inherit; + border-bottom-left-radius: inherit; +} +.ui-li>.ui-btn-inner { display: block; position: relative; padding: 0; } +.ui-li .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li { padding: .7em 15px; display: block; } +.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-thumb { min-height: 59px; padding-left: 100px; } +.ui-li-has-icon .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-icon { min-height: 20px; padding-left: 40px; } +.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-count, .ui-li-divider.ui-li-has-count { padding-right: 45px; } +.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow { padding-right: 40px; } +.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow.ui-li-has-count { padding-right: 75px; } +.ui-li-heading { font-size: 16px; font-weight: bold; display: block; margin: .6em 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } +.ui-li-desc { font-size: 12px; font-weight: normal; display: block; margin: -.5em 0 .6em; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } +ol.ui-listview > .ui-li .ui-li-heading { display: inline-block; width: 100%; margin-left: -1.3em; text-indent: 1.3em; vertical-align: middle; } +ol.ui-listview > .ui-li .ui-li-desc:not(.ui-li-aside) { text-indent: 1.55em; } +.ui-li-thumb, .ui-listview .ui-li-icon { position: absolute; left: 1px; top: 0; max-height: 80px; max-width: 80px; } +.ui-listview .ui-li-icon { max-height: 16px; max-width: 16px; left: 10px; top: .9em; } +.ui-li-thumb, .ui-listview .ui-li-icon, .ui-li-content { float: left; margin-right: 10px; } +.ui-li-aside { float: right; width: 50%; text-align: right; margin: .3em 0; } +@media all and (min-width: 480px){ + .ui-li-aside { width: 45%; } +} +.ui-li-divider { cursor: default; } +.ui-li-has-alt .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt { padding-right: 53px; } +.ui-li-has-alt.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt.ui-li-has-count { padding-right: 88px; } +.ui-li-has-count .ui-li-count { position: absolute; font-size: 11px; font-weight: bold; padding: .2em .5em; top: 50%; margin-top: -.9em; right: 10px; } +.ui-li-has-count.ui-li-divider .ui-li-count, .ui-li-has-count .ui-link-inherit .ui-li-count { margin-top: -.95em; } +.ui-li-has-arrow.ui-li-has-count .ui-li-count { right: 40px; } +.ui-li-has-alt.ui-li-has-count .ui-li-count { right: 53px; } +.ui-li-link-alt { position: absolute; width: 40px; height: 100%; border-width: 0; border-left-width: 1px; top: 0; right: 0; margin: 0; padding: 0; z-index: 2; } +.ui-li-link-alt .ui-btn { overflow: hidden; position: absolute; right: 8px; top: 50%; margin: -13px 0 0 0; border-bottom-width: 1px; z-index: -1;} +.ui-li-link-alt .ui-btn-inner { padding: 0; height: 100%; position: absolute; width: 100%; top: 0; left: 0;} +.ui-li-link-alt .ui-btn .ui-icon { right: 50%; margin-right: -9px; } +.ui-li-link-alt .ui-btn-icon-notext .ui-btn-inner .ui-icon { position: absolute; top: 50%; margin-top: -9px; } +.ui-listview * .ui-btn-inner > .ui-btn > .ui-btn-inner { border-top: 0; } +.ui-listview-filter { border-width: 0; overflow: hidden; margin: -15px -15px 15px -15px; } +.ui-collapsible-content .ui-listview-filter { margin: -10px -15px 10px -15px; border-bottom: inherit; } +.ui-listview-filter-inset { margin: -15px -5px; background: transparent; } +.ui-collapsible-content .ui-listview-filter-inset { margin: -5px; border-bottom-width: 0; } +.ui-listview-filter .ui-input-search { margin: 5px; width: auto; display: block; } +.ui-li.ui-screen-hidden{ display:none; } +/* Odd iPad positioning issue. */ +@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) { + .ui-li .ui-btn-text { overflow: visible; } +} +label.ui-slider { + font-size: 16px; + line-height: 1.4; + font-weight: normal; + margin: 0; + display: block; +} +.ui-field-contain label.ui-slider { + margin-bottom: .4em; +} +div.ui-slider { + height: 30px; + margin: .5em 0; + zoom: 1; +} +div.ui-slider.ui-mini { + margin: .25em 0; +} +.ui-field-contain div.ui-slider, +.ui-field-contain div.ui-slider.ui-mini { + margin: 0; +} +div.ui-slider:before, div.ui-slider:after { + content: ""; + display: table; +} +div.ui-slider:after { + clear: both; +} +/* High level of specificity to override Textinput CSS. */ +input.ui-input-text.ui-slider-input { + display: block; + float: left; + margin: 0; + padding: 4px; + width: 40px; + height: 22px; + line-height: 22px; + font-size: 14px; + border-width: 0; + background-image: none; + font-weight: bold; + text-align: center; + vertical-align: text-bottom; + outline: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + -ms-box-sizing: content-box; + box-sizing: content-box; +} +.ui-slider-input::-webkit-outer-spin-button, +.ui-slider-input::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} +.ui-slider-track, +.ui-slider-switch { + position: relative; + overflow: visible; + height: 15px; + margin: 0 15px 0 68px; + top: 6px; +} +.ui-slider-track.ui-mini { + height: 12px; + top: 8px; +} +.ui-slider-bg { + border: none; + height: 100%; +} +/* High level of specificity to override button margins in grids */ +.ui-slider-track .ui-btn.ui-slider-handle, +.ui-slider-switch .ui-btn.ui-slider-handle { + position: absolute; + z-index: 1; + top: 50%; + width: 28px; + height: 28px; + margin: -15px 0 0 -15px; + outline: 0; +} +.ui-slider-track.ui-mini .ui-slider-handle { + height: 14px; + width: 14px; + margin: -8px 0 0 -7px; +} +.ui-slider-handle .ui-btn-inner { + padding: 0; + height: 100%; +} +.ui-slider-track.ui-mini .ui-slider-handle .ui-btn-inner { + height: 30px; + width: 30px; + padding: 0; + margin: -9px 0 0 -9px; + border-top: none; +} +select.ui-slider-switch { + display: none; +} +div.ui-slider-switch { + display: inline-block; + height: 32px; + width: 5.8em; + margin: .5em 0; + top: 0; +} +/* reset the clearfix */ +div.ui-slider-switch:before, div.ui-slider-switch:after { + display: none; + clear: none; +} +div.ui-slider-switch.ui-mini { + width: 5em; + height: 29px; + margin: .25em 0; + top: 0; +} +.ui-field-contain .ui-slider-switch, +.ui-field-contain .ui-slider-switch.ui-mini { + margin: 0; +} +.ui-slider-inneroffset { + margin: 0 16px; + position: relative; + z-index: 1; +} +.ui-slider-switch.ui-mini .ui-slider-inneroffset { + margin: 0 15px 0 14px; +} +.ui-slider-switch .ui-btn.ui-slider-handle { + margin: 1px 0 0 -15px; +} +.ui-slider-switch.ui-mini .ui-slider-handle { + width: 25px; + height: 25px; + margin: 1px 0 0 -13px; + padding: 0; +} +.ui-slider-handle-snapping { + -webkit-transition: left 70ms linear; + -moz-transition: left 70ms linear; +} +.ui-slider-switch.ui-mini .ui-slider-handle .ui-btn-inner { + height: 30px; + width: 30px; + padding: 0; + margin: 0; + border-top: none; +} +.ui-slider-switch .ui-slider-label { + position: absolute; + text-align: center; + width: 100%; + overflow: hidden; + font-size: 16px; + top: 0; + line-height: 2; + min-height: 100%; + border-width: 0; + white-space: nowrap; + cursor: pointer; +} +.ui-slider-switch.ui-mini .ui-slider-label { + font-size: 14px; +} +.ui-slider-switch .ui-slider-label-a { + z-index: 1; + left: 0; + text-indent: -1.5em; +} +.ui-slider-switch .ui-slider-label-b { + z-index: 0; + right: 0; + text-indent: 1.5em; +} +@media all and (min-width: 28em){ + .ui-field-contain label.ui-slider { + vertical-align: top; + display: inline-block; + width: 20%; + margin: 0 2% 0 0; + } + .ui-field-contain div.ui-slider { + display: inline-block; + width: 78%; + } + .ui-field-contain.ui-hide-label div.ui-slider { + display: block; + width: auto; + } + .ui-field-contain div.ui-slider-switch, + .ui-field-contain.ui-hide-label div.ui-slider-switch { + display: inline-block; + width: 5.8em; + } + .ui-field-contain div.ui-slider-switch.ui-mini { + width: 5em; + } +} +.ui-table { + border: 0; + border-collapse: collapse; + padding: 0; + width: 100%; +} +.ui-table th, +.ui-table td { + line-height: 1.5em; + text-align: left; + padding: .4em .5em; + vertical-align:top; +} +.ui-table th .ui-btn, +.ui-table td .ui-btn { + line-height: normal; +} +.ui-table th { + font-weight: bold; +} +.ui-table caption { + text-align:left; + margin-bottom:1.4em; + opacity: .5; +} +/* Add strokes between each row */ +.table-stroke thead th { + border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback */ + border-bottom: 1px solid rgba(0, 0, 0, .1); +} +.table-stroke tbody th, +.table-stroke tbody td { + border-bottom: 1px solid #e6e6e6; /* non-RGBA fallback */ + border-bottom: 1px solid rgba(0, 0, 0, .05); +} +/* Add alternating row stripes */ +.table-stripe tbody tr:nth-child(odd) td, +.table-stripe tbody tr:nth-child(odd) th { + background-color: #eeeeee; /* non-RGBA fallback */ + background-color: rgba(0,0,0,0.04); +} +/* Add stroke to the header and last item */ +.table-stripe thead th, +.table-stripe tbody tr:last-child { + border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback */ + border-bottom: 1px solid rgba(0, 0, 0, .1); +} +/* + Styles for the table columntoggle mode +*/ +.ui-table-columntoggle-btn { + float: right; + margin-bottom:.8em; +} +/* Remove top/bottom margins around the fieldcontain on check list */ +.ui-table-columntoggle-popup fieldset { + margin:0; +} +/* Hide all prioritized columns by default */ +@media only all { + th.ui-table-priority-6, + td.ui-table-priority-6, + th.ui-table-priority-5, + td.ui-table-priority-5, + th.ui-table-priority-4, + td.ui-table-priority-4, + th.ui-table-priority-3, + td.ui-table-priority-3, + th.ui-table-priority-2, + td.ui-table-priority-2, + th.ui-table-priority-1, + td.ui-table-priority-1 { + display: none; + } +} +/* Preset breakpoints if ".ui-responsive" class added to table */ +/* Show priority 1 at 320px (20em x 16px) */ +@media screen and (min-width: 20em) { + .ui-table-columntoggle.ui-responsive th.ui-table-priority-1, + .ui-table-columntoggle.ui-responsive td.ui-table-priority-1 { + display: table-cell; + } +} +/* Show priority 2 at 480px (30em x 16px) */ +@media screen and (min-width: 30em) { + .ui-table-columntoggle.ui-responsive th.ui-table-priority-2, + .ui-table-columntoggle.ui-responsive td.ui-table-priority-2 { + display: table-cell; + } +} +/* Show priority 3 at 640px (40em x 16px) */ +@media screen and (min-width: 40em) { + .ui-table-columntoggle.ui-responsive th.ui-table-priority-3, + .ui-table-columntoggle.ui-responsive td.ui-table-priority-3 { + display: table-cell; + } +} +/* Show priority 4 at 800px (50em x 16px) */ +@media screen and (min-width: 50em) { + .ui-table-columntoggle.ui-responsive th.ui-table-priority-4, + .ui-table-columntoggle.ui-responsive td.ui-table-priority-4 { + display: table-cell; + } +} +/* Show priority 5 at 960px (60em x 16px) */ +@media screen and (min-width: 60em) { + .ui-table-columntoggle.ui-responsive th.ui-table-priority-5, + .ui-table-columntoggle.ui-responsive td.ui-table-priority-5 { + display: table-cell; + } +} +/* Show priority 6 at 1,120px (70em x 16px) */ +@media screen and (min-width: 70em) { + .ui-table-columntoggle.ui-responsive th.ui-table-priority-6, + .ui-table-columntoggle.ui-responsive td.ui-table-priority-6 { + display: table-cell; + } +} +/* Unchecked manually: Always hide */ +.ui-table-columntoggle th.ui-table-cell-hidden, +.ui-table-columntoggle td.ui-table-cell-hidden, +.ui-table-columntoggle.ui-responsive th.ui-table-cell-hidden, +.ui-table-columntoggle.ui-responsive td.ui-table-cell-hidden { + display: none; +} +/* Checked manually: Always show */ +.ui-table-columntoggle th.ui-table-cell-visible, +.ui-table-columntoggle td.ui-table-cell-visible, +.ui-table-columntoggle.ui-responsive th.ui-table-cell-visible, +.ui-table-columntoggle.ui-responsive td.ui-table-cell-visible { + display: table-cell; +} +/* + Styles for the table columntoggle mode +*/ +.ui-table-reflow td .ui-table-cell-label, +.ui-table-reflow th .ui-table-cell-label { + display: none; +} +/* Mobile first styles: Begin with the stacked presentation at narrow widths */ +@media only all { + /* Hide the table headers */ + .ui-table-reflow thead td, + .ui-table-reflow thead th { + display: none; + } + /* Show the table cells as a block level element */ + .ui-table-reflow td, + .ui-table-reflow th { + text-align: left; + display: block; + } + /* Add a fair amount of top margin to visually separate each row when stacked */ + .ui-table-reflow tbody th { + margin-top: 3em; + } + /* Make the label elements a percentage width */ + .ui-table-reflow td .ui-table-cell-label, + .ui-table-reflow th .ui-table-cell-label { + padding: .4em; + min-width: 30%; + display: inline-block; + margin: -.4em 1em -.4em -.4em; + } + /* For grouped headers, have a different style to visually separate the levels by classing the first label in each col group */ + .ui-table-reflow th .ui-table-cell-label-top, + .ui-table-reflow td .ui-table-cell-label-top { + display: block; + padding: .4em 0; + margin: .4em 0; + text-transform: uppercase; + font-size: .9em; + font-weight: normal; + } +} +/* Breakpoint to show as a standard table at 560px (35em x 16px) or wider */ +@media ( min-width: 35em ) { + /* Fixes table rendering when switching between breakpoints in Safari <= 5. See https://github.com/jquery/jquery-mobile/issues/5380 */ + .ui-table-reflow.ui-responsive { + display: table-row-group; + } + /* Show the table header rows */ + .ui-table-reflow.ui-responsive td, + .ui-table-reflow.ui-responsive th, + .ui-table-reflow.ui-responsive tbody th, + .ui-table-reflow.ui-responsive tbody td, + .ui-table-reflow.ui-responsive thead td, + .ui-table-reflow.ui-responsive thead th { + display: table-cell; + margin: 0; + } + /* Hide the labels in each cell */ + .ui-table-reflow.ui-responsive td .ui-table-cell-label, + .ui-table-reflow.ui-responsive th .ui-table-cell-label { + display: none; + } +} +/* Hack to make IE9 and WP7.5 treat cells like block level elements, scoped to ui-responsive class */ +/* Applied in a max-width media query up to the table layout breakpoint so we don't need to negate this*/ +@media ( max-width: 35em ) { + .ui-table-reflow.ui-responsive td, + .ui-table-reflow.ui-responsive th { + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + clear: left; + } +} +/* panel */ +.ui-panel { + width: 17em; + min-height: 100%; + max-height: none; + border-width: 0; + position: absolute; + top: 0; + display: block; +} +.ui-panel-closed { + width: 0; + max-height: 100%; + overflow: hidden; + visibility: hidden; +} +.ui-panel-fixed { + position: fixed; + bottom: -1px; /* fixes gap on Chrome for Android */ + padding-bottom: 1px; +} +.ui-panel-display-overlay { + z-index: 1001; /* fixed toolbars have z-index 1000 */ +} +.ui-panel-display-reveal { + z-index: 0; +} +.ui-panel-display-push { + z-index: 999; +} +.ui-panel-inner { + padding: 15px; +} +/* content-wrap */ +.ui-panel-content-wrap { + position: relative; + left: 0; + min-height: inherit; + border: none; + z-index: 999; +} +.ui-panel-content-wrap-display-overlay, +.ui-panel-animate.ui-panel-content-wrap > .ui-header, /* ios4 fix */ +.ui-panel-content-wrap-closed { + position: static; +} +/* dismiss */ +.ui-panel-dismiss { + position: absolute; + top: 0; + left:0; + height: 100%; + width: 100%; + z-index: 1002; + display: none; +} +.ui-panel-dismiss-open { + display: block; +} +/* animate class is added to panel, wrapper and fixed toolbars */ +.ui-panel-animate { + -webkit-transition: -webkit-transform 350ms ease; + -moz-transition: -moz-transform 350ms ease; + transition: transform 350ms ease; +} +/* hardware acceleration for smoother transitions on WebKit browsers */ +.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal), +.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal) > div, +.ui-panel-animate.ui-panel-closed.ui-panel-display-reveal > div, +.ui-panel-animate.ui-panel-content-wrap, +.ui-panel-animate.ui-panel-content-fixed-toolbar { + -webkit-backface-visibility: hidden; + -webkit-transform: translate3d(0,0,0); +} +/* positioning: panel */ +/* panel left */ +.ui-panel-position-left { + left: -17em; +} +/* animated: panel left (for overlay and push) */ +.ui-panel-animate.ui-panel-position-left.ui-panel-display-overlay, +.ui-panel-animate.ui-panel-position-left.ui-panel-display-push { + left: 0; + -webkit-transform: translate3d(-17em,0,0); + -moz-transform: translate3d(-17em,0,0); + transform: translate3d(-17em,0,0); +} +/* panel left open */ +.ui-panel-position-left.ui-panel-display-reveal, /* negate "panel left" for reveal */ +.ui-panel-position-left.ui-panel-open { + left: 0; +} +/* animated: panel left open (for overlay and push) */ +.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-overlay, +.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-push { + -webkit-transform: translate3d(0,0,0); + transform: translate3d(0,0,0); + -moz-transform: none; +} +/* panel right */ +.ui-panel-position-right { + right: -17em; +} +/* animated: panel right (for overlay and push) */ +.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay, +.ui-panel-animate.ui-panel-position-right.ui-panel-display-push { + right: 0; + -webkit-transform: translate3d(17em,0,0); + -moz-transform: translate3d(17em,0,0); + transform: translate3d(17em,0,0); +} +/* panel right open */ +.ui-panel-position-right.ui-panel-display-reveal, /* negate "panel right" for reveal */ +.ui-panel-position-right.ui-panel-open { + right: 0; +} +/* animated: panel right open (for overlay and push) */ +.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-overlay, +.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-push { + -webkit-transform: translate3d(0,0,0); + transform: translate3d(0,0,0); + -moz-transform: none; +} +/* positioning: content wrap, fixed toolbars and dismiss */ +/* panel left open */ +.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open, +.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open, +.ui-panel-dismiss-position-left.ui-panel-dismiss-open { + left: 17em; + right: -17em; +} +/* animated: panel left open (for reveal and push) */ +.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal, +.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push, +.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal, +.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push { + left: 0; + right: 0; + -webkit-transform: translate3d(17em,0,0); + -moz-transform: translate3d(17em,0,0); + transform: translate3d(17em,0,0); +} +/* panel right open */ +.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open, +.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open, +.ui-panel-dismiss-position-right.ui-panel-dismiss-open { + left: -17em; + right: 17em; +} +/* animated: panel right open (for reveal and push) */ +.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal, +.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push, +.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal, +.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push { + left: 0; + right: 0; + -webkit-transform: translate3d(-17em,0,0); + -moz-transform: translate3d(-17em,0,0); + transform: translate3d(-17em,0,0); +} +/* negate "panel left/right open" for overlay */ +.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-overlay, +.ui-panel-content-wrap-open.ui-panel-content-wrap-display-overlay { + left: 0; +} +/* always disable overflow-x to prevent zoom issue on Android */ +.ui-page-active.ui-page-panel { + overflow-x: hidden; +} +/* shadows and borders */ +.ui-panel-display-reveal { + -webkit-box-shadow: inset -5px 0 5px rgba(0,0,0,.15); + -moz-box-shadow: inset -5px 0 5px rgba(0,0,0,.15); + box-shadow: inset -5px 0 5px rgba(0,0,0,.15); +} +.ui-panel-position-right.ui-panel-display-reveal { + -webkit-box-shadow: inset 5px 0 5px rgba(0,0,0,.15); + -moz-box-shadow: inset 5px 0 5px rgba(0,0,0,.15); + box-shadow: inset 5px 0 5px rgba(0,0,0,.15); +} +.ui-panel-display-overlay { + -webkit-box-shadow: 5px 0 5px rgba(0,0,0,.15); + -moz-box-shadow: 5px 0 5px rgba(0,0,0,.15); + box-shadow: 5px 0 5px rgba(0,0,0,.15); +} +.ui-panel-position-right.ui-panel-display-overlay { + -webkit-box-shadow: -5px 0 5px rgba(0,0,0,.15); + -moz-box-shadow: -5px 0 5px rgba(0,0,0,.15); + box-shadow: -5px 0 5px rgba(0,0,0,.15); +} +.ui-panel-display-push.ui-panel-open.ui-panel-position-left { + border-right-width: 1px; + margin-right: -1px; +} +.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push { + margin-left: 1px; +} +.ui-panel-display-push.ui-panel-open.ui-panel-position-right { + border-left-width: 1px; + margin-left: -1px; +} +.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push { + margin-right: 1px; +} +/* wrap on wide viewports once open */ +@media (min-width:55em){ + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-left, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-left, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-left, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-left { + margin-right: 17em; + } + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-right, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-right, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-right, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-right { + margin-left: 17em; + } + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal { + width: auto; + } + .ui-responsive-panel .ui-panel-dismiss-display-push { + display: none; + } +} diff --git a/bonus/cordova/3000cg/nanhucg/www/css/jquery.mobile-1.3.2.min.css b/bonus/cordova/3000cg/nanhucg/www/css/jquery.mobile-1.3.2.min.css new file mode 100755 index 0000000..ac69ed8 --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/css/jquery.mobile-1.3.2.min.css @@ -0,0 +1,24 @@ +/*! jQuery Mobile 1.3.2 | Git HEAD hash: 528cf0e <> 2013-07-19T22:17:57Z | (c) 2010, 2013 jQuery Foundation, Inc. | jquery.org/license */ + +/*! +* jQuery Mobile 1.3.2 +* Git HEAD hash: 528cf0e96940644ea644096bfeb913ed920ffaef <> Date: Fri Jul 19 2013 22:17:57 UTC +* http://jquerymobile.com +* +* Copyright 2010, 2013 jQuery Foundation, Inc. and other contributors +* Released under the MIT license. +* http://jquery.org/license +* +*/.ui-bar-a{ + border: 1px solid #333; + background: Lime; + color: #FC0; + font-weight: 700; + text-shadow: 0 -1px 0 #000; + background-image: -webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#111)); + background-image: -webkit-linear-gradient(#3c3c3c,#111); + background-image: -moz-linear-gradient(#3c3c3c,#111); + background-image: -ms-linear-gradient(#3c3c3c,#111); + background-image: -o-linear-gradient(#3c3c3c,#111); + background-image: url(none) + }.ui-bar-a,.ui-bar-a input,.ui-bar-a select,.ui-bar-a textarea,.ui-bar-a button{font-family:Helvetica,Arial,sans-serif}.ui-bar-a .ui-link-inherit{color:#fff}.ui-bar-a a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-a a.ui-link:visited{color:#2489ce}.ui-bar-a a.ui-link:hover{color:#2489ce}.ui-bar-a a.ui-link:active{color:#2489ce}.ui-body-a,.ui-overlay-a{border:1px solid #444;background:#222;color:#fff;text-shadow:0 1px 0 #111;font-weight:400;background-image:-webkit-gradient(linear,left top,left bottom,from(#444),to(#222));background-image:-webkit-linear-gradient(#444,#222);background-image:-moz-linear-gradient(#444,#222);background-image:-ms-linear-gradient(#444,#222);background-image:-o-linear-gradient(#444,#222);background-image:linear-gradient(#444,#222)}.ui-overlay-a{background-image:none;border-width:0}.ui-body-a,.ui-body-a input,.ui-body-a select,.ui-body-a textarea,.ui-body-a button{font-family:Helvetica,Arial,sans-serif}.ui-body-a .ui-link-inherit{color:#fff}.ui-body-a .ui-link{color:#2489ce;font-weight:700}.ui-body-a .ui-link:visited{color:#2489ce}.ui-body-a .ui-link:hover{color:#2489ce}.ui-body-a .ui-link:active{color:#2489ce}.ui-btn-up-a{border:1px solid #111;background:#333;font-weight:700;color:#fff;text-shadow:0 1px 0 #111;background-image:-webkit-gradient(linear,left top,left bottom,from(#444),to(#2d2d2d));background-image:-webkit-linear-gradient(#444,#2d2d2d);background-image:-moz-linear-gradient(#444,#2d2d2d);background-image:-ms-linear-gradient(#444,#2d2d2d);background-image:-o-linear-gradient(#444,#2d2d2d);background-image:linear-gradient(#444,#2d2d2d)}.ui-btn-up-a:visited,.ui-btn-up-a a.ui-link-inherit{color:#fff}.ui-btn-hover-a{border:1px solid #000;background:#444;font-weight:700;color:#fff;text-shadow:0 1px 0 #111;background-image:-webkit-gradient(linear,left top,left bottom,from(#555),to(#383838));background-image:-webkit-linear-gradient(#555,#383838);background-image:-moz-linear-gradient(#555,#383838);background-image:-ms-linear-gradient(#555,#383838);background-image:-o-linear-gradient(#555,#383838);background-image:linear-gradient(#555,#383838)}.ui-btn-hover-a:visited,.ui-btn-hover-a:hover,.ui-btn-hover-a a.ui-link-inherit{color:#fff}.ui-btn-down-a{border:1px solid #000;background:#222;font-weight:700;color:#fff;text-shadow:0 1px 0 #111;background-image:-webkit-gradient(linear,left top,left bottom,from(#202020),to(#2c2c2c));background-image:-webkit-linear-gradient(#202020,#2c2c2c);background-image:-moz-linear-gradient(#202020,#2c2c2c);background-image:-ms-linear-gradient(#202020,#2c2c2c);background-image:-o-linear-gradient(#202020,#2c2c2c);background-image:linear-gradient(#202020,#2c2c2c)}.ui-btn-down-a:visited,.ui-btn-down-a:hover,.ui-btn-down-a a.ui-link-inherit{color:#fff}.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-b{border:1px solid #456f9a;background:#5e87b0;color:#fff;font-weight:700;text-shadow:0 1px 0 #3e6790;background-image:-webkit-gradient(linear,left top,left bottom,from(#6facd5),to(#497bae));background-image:-webkit-linear-gradient(#6facd5,#497bae);background-image:-moz-linear-gradient(#6facd5,#497bae);background-image:-ms-linear-gradient(#6facd5,#497bae);background-image:-o-linear-gradient(#6facd5,#497bae);background-image:linear-gradient(#6facd5,#497bae)}.ui-bar-b,.ui-bar-b input,.ui-bar-b select,.ui-bar-b textarea,.ui-bar-b button{font-family:Helvetica,Arial,sans-serif}.ui-bar-b .ui-link-inherit{color:#fff}.ui-bar-b a.ui-link{color:#ddf0f8;font-weight:700}.ui-bar-b a.ui-link:visited{color:#ddf0f8}.ui-bar-b a.ui-link:hover{color:#ddf0f8}.ui-bar-b a.ui-link:active{color:#ddf0f8}.ui-body-b,.ui-overlay-b{border:1px solid #999;background:#f3f3f3;color:#222;text-shadow:0 1px 0 #fff;font-weight:400;background-image:-webkit-gradient(linear,left top,left bottom,from(#ddd),to(#ccc));background-image:-webkit-linear-gradient(#ddd,#ccc);background-image:-moz-linear-gradient(#ddd,#ccc);background-image:-ms-linear-gradient(#ddd,#ccc);background-image:-o-linear-gradient(#ddd,#ccc);background-image:linear-gradient(#ddd,#ccc)}.ui-overlay-b{background-image:none;border-width:0}.ui-body-b,.ui-body-b input,.ui-body-b select,.ui-body-b textarea,.ui-body-b button{font-family:Helvetica,Arial,sans-serif}.ui-body-b .ui-link-inherit{color:#333}.ui-body-b .ui-link{color:#2489ce;font-weight:700}.ui-body-b .ui-link:visited{color:#2489ce}.ui-body-b .ui-link:hover{color:#2489ce}.ui-body-b .ui-link:active{color:#2489ce}.ui-btn-up-b{border:1px solid #044062;background:#396b9e;font-weight:700;color:#fff;text-shadow:0 1px 0 #194b7e;background-image:-webkit-gradient(linear,left top,left bottom,from(#5f9cc5),to(#396b9e));background-image:-webkit-linear-gradient(#5f9cc5,#396b9e);background-image:-moz-linear-gradient(#5f9cc5,#396b9e);background-image:-ms-linear-gradient(#5f9cc5,#396b9e);background-image:-o-linear-gradient(#5f9cc5,#396b9e);background-image:linear-gradient(#5f9cc5,#396b9e)}.ui-btn-up-b:visited,.ui-btn-up-b a.ui-link-inherit{color:#fff}.ui-btn-hover-b{border:1px solid #00415e;background:#4b88b6;font-weight:700;color:#fff;text-shadow:0 1px 0 #194b7e;background-image:-webkit-gradient(linear,left top,left bottom,from(#6facd5),to(#4272a4));background-image:-webkit-linear-gradient(#6facd5,#4272a4);background-image:-moz-linear-gradient(#6facd5,#4272a4);background-image:-ms-linear-gradient(#6facd5,#4272a4);background-image:-o-linear-gradient(#6facd5,#4272a4);background-image:linear-gradient(#6facd5,#4272a4)}.ui-btn-hover-b:visited,.ui-btn-hover-b:hover,.ui-btn-hover-b a.ui-link-inherit{color:#fff}.ui-btn-down-b{border:1px solid #225377;background:#4e89c5;font-weight:700;color:#fff;text-shadow:0 1px 0 #194b7e;background-image:-webkit-gradient(linear,left top,left bottom,from(#295b8e),to(#3e79b5));background-image:-webkit-linear-gradient(#295b8e,#3e79b5);background-image:-moz-linear-gradient(#295b8e,#3e79b5);background-image:-ms-linear-gradient(#295b8e,#3e79b5);background-image:-o-linear-gradient(#295b8e,#3e79b5);background-image:linear-gradient(#295b8e,#3e79b5)}.ui-btn-down-b:visited,.ui-btn-down-b:hover,.ui-btn-down-b a.ui-link-inherit{color:#fff}.ui-btn-up-b,.ui-btn-hover-b,.ui-btn-down-b{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-c{border:1px solid #b3b3b3;background:#eee;color:#3e3e3e;font-weight:700;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#f0f0f0),to(#ddd));background-image:-webkit-linear-gradient(#f0f0f0,#ddd);background-image:-moz-linear-gradient(#f0f0f0,#ddd);background-image:-ms-linear-gradient(#f0f0f0,#ddd);background-image:-o-linear-gradient(#f0f0f0,#ddd);background-image:linear-gradient(#f0f0f0,#ddd)}.ui-bar-c .ui-link-inherit{color:#3e3e3e}.ui-bar-c a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-c a.ui-link:visited{color:#2489ce}.ui-bar-c a.ui-link:hover{color:#2489ce}.ui-bar-c a.ui-link:active{color:#2489ce}.ui-bar-c,.ui-bar-c input,.ui-bar-c select,.ui-bar-c textarea,.ui-bar-c button{font-family:Helvetica,Arial,sans-serif}.ui-body-c,.ui-overlay-c{border:1px solid #aaa;color:#333;text-shadow:0 1px 0 #fff;background:#f9f9f9;background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#eee));background-image:-webkit-linear-gradient(#f9f9f9,#eee);background-image:-moz-linear-gradient(#f9f9f9,#eee);background-image:-ms-linear-gradient(#f9f9f9,#eee);background-image:-o-linear-gradient(#f9f9f9,#eee);background-image:linear-gradient(#f9f9f9,#eee)}.ui-overlay-c{background-image:none;border-width:0}.ui-body-c,.ui-body-c input,.ui-body-c select,.ui-body-c textarea,.ui-body-c button{font-family:Helvetica,Arial,sans-serif}.ui-body-c .ui-link-inherit{color:#333}.ui-body-c .ui-link{color:#2489ce;font-weight:700}.ui-body-c .ui-link:visited{color:#2489ce}.ui-body-c .ui-link:hover{color:#2489ce}.ui-body-c .ui-link:active{color:#2489ce}.ui-btn-up-c{border:1px solid #ccc;background:#eee;font-weight:700;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f1f1f1));background-image:-webkit-linear-gradient(#fff,#f1f1f1);background-image:-moz-linear-gradient(#fff,#f1f1f1);background-image:-ms-linear-gradient(#fff,#f1f1f1);background-image:-o-linear-gradient(#fff,#f1f1f1);background-image:linear-gradient(#fff,#f1f1f1)}.ui-btn-up-c:visited,.ui-btn-up-c a.ui-link-inherit{color:#2f3e46}.ui-btn-hover-c{border:1px solid #bbb;background:#dfdfdf;font-weight:700;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#f6f6f6),to(#e0e0e0));background-image:-webkit-linear-gradient(#f6f6f6,#e0e0e0);background-image:-moz-linear-gradient(#f6f6f6,#e0e0e0);background-image:-ms-linear-gradient(#f6f6f6,#e0e0e0);background-image:-o-linear-gradient(#f6f6f6,#e0e0e0);background-image:linear-gradient(#f6f6f6,#e0e0e0)}.ui-btn-hover-c:visited,.ui-btn-hover-c:hover,.ui-btn-hover-c a.ui-link-inherit{color:#2f3e46}.ui-btn-down-c{border:1px solid #bbb;background:#d6d6d6;font-weight:700;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#d0d0d0),to(#dfdfdf));background-image:-webkit-linear-gradient(#d0d0d0,#dfdfdf);background-image:-moz-linear-gradient(#d0d0d0,#dfdfdf);background-image:-ms-linear-gradient(#d0d0d0,#dfdfdf);background-image:-o-linear-gradient(#d0d0d0,#dfdfdf);background-image:linear-gradient(#d0d0d0,#dfdfdf)}.ui-btn-down-c:visited,.ui-btn-down-c:hover,.ui-btn-down-c a.ui-link-inherit{color:#2f3e46}.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-d{border:1px solid #bbb;background:#bbb;color:#333;font-weight:700;text-shadow:0 1px 0 #eee;background-image:-webkit-gradient(linear,left top,left bottom,from(#ddd),to(#bbb));background-image:-webkit-linear-gradient(#ddd,#bbb);background-image:-moz-linear-gradient(#ddd,#bbb);background-image:-ms-linear-gradient(#ddd,#bbb);background-image:-o-linear-gradient(#ddd,#bbb);background-image:linear-gradient(#ddd,#bbb)}.ui-bar-d,.ui-bar-d input,.ui-bar-d select,.ui-bar-d textarea,.ui-bar-d button{font-family:Helvetica,Arial,sans-serif}.ui-bar-d .ui-link-inherit{color:#333}.ui-bar-d a.ui-link{color:#2489ce;font-weight:700}.ui-bar-d a.ui-link:visited{color:#2489ce}.ui-bar-d a.ui-link:hover{color:#2489ce}.ui-bar-d a.ui-link:active{color:#2489ce}.ui-body-d,.ui-overlay-d{border:1px solid #bbb;color:#333;text-shadow:0 1px 0 #fff;background:#fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#fff));background-image:-webkit-linear-gradient(#fff,#fff);background-image:-moz-linear-gradient(#fff,#fff);background-image:-ms-linear-gradient(#fff,#fff);background-image:-o-linear-gradient(#fff,#fff);background-image:linear-gradient(#fff,#fff)}.ui-overlay-d{background-image:none;border-width:0}.ui-body-d,.ui-body-d input,.ui-body-d select,.ui-body-d textarea,.ui-body-d button{font-family:Helvetica,Arial,sans-serif}.ui-body-d .ui-link-inherit{color:#333}.ui-body-d .ui-link{color:#2489ce;font-weight:700}.ui-body-d .ui-link:visited{color:#2489ce}.ui-body-d .ui-link:hover{color:#2489ce}.ui-body-d .ui-link:active{color:#2489ce}.ui-btn-up-d{border:1px solid #bbb;background:#fff;font-weight:700;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#f6f6f6));background-image:-webkit-linear-gradient(#fafafa,#f6f6f6);background-image:-moz-linear-gradient(#fafafa,#f6f6f6);background-image:-ms-linear-gradient(#fafafa,#f6f6f6);background-image:-o-linear-gradient(#fafafa,#f6f6f6);background-image:linear-gradient(#fafafa,#f6f6f6)}.ui-btn-up-d:visited,.ui-btn-up-d a.ui-link-inherit{color:#333}.ui-btn-hover-d{border:1px solid #aaa;background:#eee;font-weight:700;color:#333;cursor:pointer;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#eee),to(#fff));background-image:-webkit-linear-gradient(#eee,#fff);background-image:-moz-linear-gradient(#eee,#fff);background-image:-ms-linear-gradient(#eee,#fff);background-image:-o-linear-gradient(#eee,#fff);background-image:linear-gradient(#eee,#fff)}.ui-btn-hover-d:visited,.ui-btn-hover-d:hover,.ui-btn-hover-d a.ui-link-inherit{color:#333}.ui-btn-down-d{border:1px solid #aaa;background:#eee;font-weight:700;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#e5e5e5),to(#f2f2f2));background-image:-webkit-linear-gradient(#e5e5e5,#f2f2f2);background-image:-moz-linear-gradient(#e5e5e5,#f2f2f2);background-image:-ms-linear-gradient(#e5e5e5,#f2f2f2);background-image:-o-linear-gradient(#e5e5e5,#f2f2f2);background-image:linear-gradient(#e5e5e5,#f2f2f2)}.ui-btn-down-d:visited,.ui-btn-down-d:hover,.ui-btn-down-d a.ui-link-inherit{color:#333}.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-e{border:1px solid #f7c942;background:#fadb4e;color:#333;font-weight:700;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fceda7),to(#fbef7e));background-image:-webkit-linear-gradient(#fceda7,#fbef7e);background-image:-moz-linear-gradient(#fceda7,#fbef7e);background-image:-ms-linear-gradient(#fceda7,#fbef7e);background-image:-o-linear-gradient(#fceda7,#fbef7e);background-image:linear-gradient(#fceda7,#fbef7e)}.ui-bar-e,.ui-bar-e input,.ui-bar-e select,.ui-bar-e textarea,.ui-bar-e button{font-family:Helvetica,Arial,sans-serif}.ui-bar-e .ui-link-inherit{color:#333}.ui-bar-e a.ui-link{color:#2489ce;font-weight:700}.ui-bar-e a.ui-link:visited{color:#2489ce}.ui-bar-e a.ui-link:hover{color:#2489ce}.ui-bar-e a.ui-link:active{color:#2489ce}.ui-body-e,.ui-overlay-e{border:1px solid #f7c942;color:#222;text-shadow:0 1px 0 #fff;background:#fff9df;background-image:-webkit-gradient(linear,left top,left bottom,from(#fffadf),to(#fff3a5));background-image:-webkit-linear-gradient(#fffadf,#fff3a5);background-image:-moz-linear-gradient(#fffadf,#fff3a5);background-image:-ms-linear-gradient(#fffadf,#fff3a5);background-image:-o-linear-gradient(#fffadf,#fff3a5);background-image:linear-gradient(#fffadf,#fff3a5)}.ui-overlay-e{background-image:none;border-width:0}.ui-body-e,.ui-body-e input,.ui-body-e select,.ui-body-e textarea,.ui-body-e button{font-family:Helvetica,Arial,sans-serif}.ui-body-e .ui-link-inherit{color:#222}.ui-body-e .ui-link{color:#2489ce;font-weight:700}.ui-body-e .ui-link:visited{color:#2489ce}.ui-body-e .ui-link:hover{color:#2489ce}.ui-body-e .ui-link:active{color:#2489ce}.ui-btn-up-e{border:1px solid #f4c63f;background:#fadb4e;font-weight:700;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#ffefaa),to(#ffe155));background-image:-webkit-linear-gradient(#ffefaa,#ffe155);background-image:-moz-linear-gradient(#ffefaa,#ffe155);background-image:-ms-linear-gradient(#ffefaa,#ffe155);background-image:-o-linear-gradient(#ffefaa,#ffe155);background-image:linear-gradient(#ffefaa,#ffe155)}.ui-btn-up-e:visited,.ui-btn-up-e a.ui-link-inherit{color:#222}.ui-btn-hover-e{border:1px solid #f2c43d;background:#fbe26f;font-weight:700;color:#111;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff5ba),to(#fbdd52));background-image:-webkit-linear-gradient(#fff5ba,#fbdd52);background-image:-moz-linear-gradient(#fff5ba,#fbdd52);background-image:-ms-linear-gradient(#fff5ba,#fbdd52);background-image:-o-linear-gradient(#fff5ba,#fbdd52);background-image:linear-gradient(#fff5ba,#fbdd52)}.ui-btn-hover-e:visited,.ui-btn-hover-e:hover,.ui-btn-hover-e a.ui-link-inherit{color:#333}.ui-btn-down-e{border:1px solid #f2c43d;background:#fceda7;font-weight:700;color:#111;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#f8d94c),to(#fadb4e));background-image:-webkit-linear-gradient(#f8d94c,#fadb4e);background-image:-moz-linear-gradient(#f8d94c,#fadb4e);background-image:-ms-linear-gradient(#f8d94c,#fadb4e);background-image:-o-linear-gradient(#f8d94c,#fadb4e);background-image:linear-gradient(#f8d94c,#fadb4e)}.ui-btn-down-e:visited,.ui-btn-down-e:hover,.ui-btn-down-e a.ui-link-inherit{color:#333}.ui-btn-up-e,.ui-btn-hover-e,.ui-btn-down-e{font-family:Helvetica,Arial,sans-serif;text-decoration:none}a.ui-link-inherit{text-decoration:none!important}.ui-btn-active{border:1px solid #2373a5;background:#5393c5;font-weight:700;color:#fff;cursor:pointer;text-shadow:0 1px 0 #3373a5;text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,from(#5393c5),to(#6facd5));background-image:-webkit-linear-gradient(#5393c5,#6facd5);background-image:-moz-linear-gradient(#5393c5,#6facd5);background-image:-ms-linear-gradient(#5393c5,#6facd5);background-image:-o-linear-gradient(#5393c5,#6facd5);background-image:linear-gradient(#5393c5,#6facd5);font-family:Helvetica,Arial,sans-serif}.ui-btn-active:visited,.ui-btn-active:hover,.ui-btn-active a.ui-link-inherit{color:#fff}.ui-btn-inner{border-top:1px solid #fff;border-color:rgba(255,255,255,.3)}.ui-corner-all{-webkit-border-radius:.6em;border-radius:.6em}.ui-br{border-color:#828282;border-color:rgba(130,130,130,.3);border-style:solid}.ui-disabled{filter:Alpha(Opacity=30);opacity:.3;zoom:1}.ui-disabled,.ui-disabled a{cursor:default!important;pointer-events:none}.ui-icon,.ui-icon-searchfield:after{background:#666;background:rgba(0,0,0,.4);background-image:url(images/icons-18-white.png);background-repeat:no-repeat;-webkit-border-radius:9px;border-radius:9px}.ui-icon-alt .ui-icon,.ui-icon-alt .ui-icon-searchfield:after{background-color:#fff;background-color:rgba(255,255,255,.3);background-image:url(images/icons-18-black.png);background-repeat:no-repeat}.ui-icon-nodisc .ui-icon,.ui-icon-nodisc .ui-icon-searchfield:after,.ui-icon-nodisc .ui-icon-alt .ui-icon,.ui-icon-nodisc .ui-icon-alt .ui-icon-searchfield:after{background-color:transparent}.ui-icon-plus{background-position:-1px -1px}.ui-icon-minus{background-position:-37px -1px}.ui-icon-delete{background-position:-73px -1px}.ui-icon-arrow-r{background-position:-108px -1px}.ui-icon-arrow-l{background-position:-144px -1px}.ui-icon-arrow-u{background-position:-180px -1px}.ui-icon-arrow-d{background-position:-216px -1px}.ui-icon-check{background-position:-252px -1px}.ui-icon-gear{background-position:-288px -1px}.ui-icon-refresh{background-position:-323px -1px}.ui-icon-forward{background-position:-360px -1px}.ui-icon-back{background-position:-396px -1px}.ui-icon-grid{background-position:-432px -1px}.ui-icon-star{background-position:-467px -1px}.ui-icon-alert{background-position:-503px -1px}.ui-icon-info{background-position:-539px -1px}.ui-icon-home{background-position:-575px -1px}.ui-icon-search,.ui-icon-searchfield:after{background-position:-611px -1px}.ui-icon-checkbox-on{background-position:-647px -1px}.ui-icon-checkbox-off{background-position:-683px -1px}.ui-icon-radio-on{background-position:-718px -1px}.ui-icon-radio-off{background-position:-754px -1px}.ui-icon-bars{background-position:-788px -1px}.ui-icon-edit{background-position:-824px -1px}@media only screen and (-webkit-min-device-pixel-ratio:1.3),only screen and (min--moz-device-pixel-ratio:1.3),only screen and (min-resolution:200dpi){.ui-icon-plus,.ui-icon-minus,.ui-icon-delete,.ui-icon-arrow-r,.ui-icon-arrow-l,.ui-icon-arrow-u,.ui-icon-arrow-d,.ui-icon-check,.ui-icon-gear,.ui-icon-refresh,.ui-icon-forward,.ui-icon-back,.ui-icon-grid,.ui-icon-star,.ui-icon-alert,.ui-icon-info,.ui-icon-home,.ui-icon-bars,.ui-icon-edit,.ui-icon-search,.ui-icon-searchfield:after,.ui-icon-checkbox-off,.ui-icon-checkbox-on,.ui-icon-radio-off,.ui-icon-radio-on{background-image:url(images/icons-36-white.png);-moz-background-size:864px 18px;-o-background-size:864px 18px;-webkit-background-size:864px 18px;background-size:864px 18px}.ui-icon-alt .ui-icon{background-image:url(images/icons-36-black.png)}.ui-icon-plus{background-position:0 50%}.ui-icon-minus{background-position:-36px 50%}.ui-icon-delete{background-position:-72px 50%}.ui-icon-arrow-r{background-position:-108px 50%}.ui-icon-arrow-l{background-position:-144px 50%}.ui-icon-arrow-u{background-position:-179px 50%}.ui-icon-arrow-d{background-position:-215px 50%}.ui-icon-check{background-position:-252px 50%}.ui-icon-gear{background-position:-287px 50%}.ui-icon-refresh{background-position:-323px 50%}.ui-icon-forward{background-position:-360px 50%}.ui-icon-back{background-position:-395px 50%}.ui-icon-grid{background-position:-431px 50%}.ui-icon-star{background-position:-467px 50%}.ui-icon-alert{background-position:-503px 50%}.ui-icon-info{background-position:-538px 50%}.ui-icon-home{background-position:-575px 50%}.ui-icon-search,.ui-icon-searchfield:after{background-position:-611px 50%}.ui-icon-checkbox-on{background-position:-647px 50%}.ui-icon-checkbox-off{background-position:-683px 50%}.ui-icon-radio-on{background-position:-718px 50%}.ui-icon-radio-off{background-position:-754px 50%}.ui-icon-bars{background-position:-788px 50%}.ui-icon-edit{background-position:-824px 50%}}.ui-checkbox .ui-icon,.ui-selectmenu-list .ui-icon{-webkit-border-radius:3px;border-radius:3px}.ui-icon-checkbox-off,.ui-icon-radio-off{background-color:transparent}.ui-checkbox-on .ui-icon,.ui-radio-on .ui-icon{background-color:#4596ce}.ui-icon-loading{background:url(images/ajax-loader.gif);background-size:46px 46px}.ui-btn-corner-all{-webkit-border-radius:1em;border-radius:1em}.ui-corner-all,.ui-btn-corner-all{-webkit-background-clip:padding;background-clip:padding-box}.ui-overlay{background:#666;filter:Alpha(Opacity=50);opacity:.5;position:absolute;width:100%;height:100%}.ui-overlay-shadow{-moz-box-shadow:0 0 12px rgba(0,0,0,.6);-webkit-box-shadow:0 0 12px rgba(0,0,0,.6);box-shadow:0 0 12px rgba(0,0,0,.6)}.ui-shadow{-moz-box-shadow:0 1px 3px rgba(0,0,0,.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2)}.ui-bar-a .ui-shadow,.ui-bar-b .ui-shadow,.ui-bar-c .ui-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.ui-shadow-inset{-moz-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);box-shadow:inset 0 1px 4px rgba(0,0,0,.2)}.ui-icon-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.4);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.4);box-shadow:0 1px 0 rgba(255,255,255,.4)}.ui-btn:focus,.ui-link-inherit:focus{outline:0}.ui-btn.ui-focus{z-index:1}.ui-focus,.ui-btn:focus{-moz-box-shadow:inset 0 0 3px #387bbe,0 0 9px #387bbe;-webkit-box-shadow:inset 0 0 3px #387bbe,0 0 9px #387bbe;box-shadow:inset 0 0 3px #387bbe,0 0 9px #387bbe}.ui-input-text.ui-focus,.ui-input-search.ui-focus{-moz-box-shadow:0 0 12px #387bbe;-webkit-box-shadow:0 0 12px #387bbe;box-shadow:0 0 12px #387bbe}.ui-mobile-nosupport-boxshadow *{-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui-mobile-nosupport-boxshadow .ui-focus,.ui-mobile-nosupport-boxshadow .ui-btn:focus,.ui-mobile-nosupport-boxshadow .ui-link-inherit:focus{outline-width:1px;outline-style:auto}.ui-mobile,.ui-mobile body{height:99.9%}.ui-mobile fieldset,.ui-page{padding:0;margin:0}.ui-mobile a img,.ui-mobile fieldset{border-width:0}.ui-mobile fieldset{min-width:0}.ui-mobile-viewport{margin:0;overflow-x:visible;-webkit-text-size-adjust:100%;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}body.ui-mobile-viewport,div.ui-mobile-viewport{overflow-x:hidden}.ui-mobile [data-role=page],.ui-mobile [data-role=dialog],.ui-page{top:0;left:0;width:100%;min-height:100%;position:absolute;display:none;border:0}.ui-mobile .ui-page-active{display:block;overflow:visible}.ui-page{outline:0}@media screen and (orientation:portrait){.ui-mobile .ui-page{min-height:420px}}@media screen and (orientation:landscape){.ui-mobile .ui-page{min-height:300px}}.ui-loading .ui-loader{display:block}.ui-loader{display:none;z-index:9999999;position:fixed;top:50%;left:50%;border:0}.ui-loader-default{background:0;filter:Alpha(Opacity=18);opacity:.18;width:46px;height:46px;margin-left:-23px;margin-top:-23px}.ui-loader-verbose{width:200px;filter:Alpha(Opacity=88);opacity:.88;box-shadow:0 1px 1px -1px #fff;height:auto;margin-left:-110px;margin-top:-43px;padding:10px}.ui-loader-default h1{font-size:0;width:0;height:0;overflow:hidden}.ui-loader-verbose h1{font-size:16px;margin:0;text-align:center}.ui-loader .ui-icon{background-color:#000;display:block;margin:0;width:44px;height:44px;padding:1px;-webkit-border-radius:36px;border-radius:36px}.ui-loader-verbose .ui-icon{margin:0 auto 10px;filter:Alpha(Opacity=75);opacity:.75}.ui-loader-textonly{padding:15px;margin-left:-115px}.ui-loader-textonly .ui-icon{display:none}.ui-loader-fakefix{position:absolute}.ui-mobile-rendering>*{visibility:hidden}.ui-bar,.ui-body{position:relative;padding:.4em 15px;overflow:hidden;display:block;clear:both}.ui-bar{font-size:16px;margin:0}.ui-bar h1,.ui-bar h2,.ui-bar h3,.ui-bar h4,.ui-bar h5,.ui-bar h6{margin:0;padding:0;font-size:16px;display:inline-block}.ui-header,.ui-footer{position:relative;zoom:1}.ui-mobile .ui-header,.ui-mobile .ui-footer{border-left-width:0;border-right-width:0}.ui-header .ui-btn-left,.ui-header .ui-btn-right,.ui-footer .ui-btn-left,.ui-footer .ui-btn-right,.ui-header-fixed.ui-fixed-hidden .ui-btn-left,.ui-header-fixed.ui-fixed-hidden .ui-btn-right{position:absolute;top:3px}.ui-header-fixed .ui-btn-left,.ui-header-fixed .ui-btn-right{top:4px}.ui-header .ui-btn-left,.ui-footer .ui-btn-left{left:5px}.ui-header .ui-btn-right,.ui-footer .ui-btn-right{right:5px}.ui-footer>.ui-btn-icon-notext,.ui-header>.ui-btn-icon-notext,.ui-header-fixed.ui-fixed-hidden>.ui-btn-icon-notext{top:6px}.ui-header-fixed>.ui-btn-icon-notext{top:7px}.ui-header .ui-title,.ui-footer .ui-title{min-height:1.1em;text-align:center;font-size:16px;display:block;margin:.6em 30% .8em;padding:0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important}.ui-footer .ui-title{margin:.6em 15px .8em}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:15px}.ui-corner-all>.ui-header:first-child,.ui-corner-all>.ui-content:first-child,.ui-corner-all>.ui-footer:first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-corner-all>.ui-header:last-child,.ui-corner-all>.ui-content:last-child,.ui-corner-all>.ui-footer:last-child{-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-icon{width:18px;height:18px}.ui-nojs{position:absolute;left:-9999px}.ui-hide-label label.ui-input-text,.ui-hide-label label.ui-select,.ui-hide-label label.ui-slider,.ui-hide-label label.ui-submit,.ui-hide-label .ui-controlgroup-label,.ui-hidden-accessible{position:absolute!important;left:-9999px;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ui-page-pre-in{opacity:0}.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms;animation-timing-function:ease-out;animation-duration:350ms}.out{-webkit-animation-timing-function:ease-in;-webkit-animation-duration:225ms;-moz-animation-timing-function:ease-in;-moz-animation-duration:225ms;animation-timing-function:ease-in;animation-duration:225ms}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-moz-keyframes fadein{from{opacity:0}to{opacity:1}}@keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeout{from{opacity:1}to{opacity:0}}@-moz-keyframes fadeout{from{opacity:1}to{opacity:0}}@keyframes fadeout{from{opacity:1}to{opacity:0}}.fade.out{opacity:0;-webkit-animation-duration:125ms;-webkit-animation-name:fadeout;-moz-animation-duration:125ms;-moz-animation-name:fadeout;animation-duration:125ms;animation-name:fadeout}.fade.in{opacity:1;-webkit-animation-duration:225ms;-webkit-animation-name:fadein;-moz-animation-duration:225ms;-moz-animation-name:fadein;animation-duration:225ms;animation-name:fadein}.pop{-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;transform-origin:50% 50%}.pop.in{-webkit-transform:scale(1);-webkit-animation-name:popin;-webkit-animation-duration:350ms;-moz-transform:scale(1);-moz-animation-name:popin;-moz-animation-duration:350ms;transform:scale(1);animation-name:popin;animation-duration:350ms;opacity:1}.pop.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms;opacity:0}.pop.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;animation-name:fadein}.pop.out.reverse{-webkit-transform:scale(.8);-webkit-animation-name:popout;-moz-transform:scale(.8);-moz-animation-name:popout;transform:scale(.8);animation-name:popout}@-webkit-keyframes popin{from{-webkit-transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);opacity:1}}@-moz-keyframes popin{from{-moz-transform:scale(.8);opacity:0}to{-moz-transform:scale(1);opacity:1}}@keyframes popin{from{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}@-webkit-keyframes popout{from{-webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.8);opacity:0}}@-moz-keyframes popout{from{-moz-transform:scale(1);opacity:1}to{-moz-transform:scale(.8);opacity:0}}@keyframes popout{from{transform:scale(1);opacity:1}to{transform:scale(.8);opacity:0}}@-webkit-keyframes slideinfromright{from{-webkit-transform:translate3d(100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromright{from{-moz-transform:translateX(100%)}to{-moz-transform:translateX(0)}}@keyframes slideinfromright{from{transform:translateX(100%)}to{transform:translateX(0)}}@-webkit-keyframes slideinfromleft{from{-webkit-transform:translate3d(-100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromleft{from{-moz-transform:translateX(-100%)}to{-moz-transform:translateX(0)}}@keyframes slideinfromleft{from{transform:translateX(-100%)}to{transform:translateX(0)}}@-webkit-keyframes slideouttoleft{from{-webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-100%,0,0)}}@-moz-keyframes slideouttoleft{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(-100%)}}@keyframes slideouttoleft{from{transform:translateX(0)}to{transform:translateX(-100%)}}@-webkit-keyframes slideouttoright{from{-webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(100%,0,0)}}@-moz-keyframes slideouttoright{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(100%)}}@keyframes slideouttoright{from{transform:translateX(0)}to{transform:translateX(100%)}}.slide.out,.slide.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms;animation-timing-function:ease-out;animation-duration:350ms}.slide.out{-webkit-transform:translate3d(-100%,0,0);-webkit-animation-name:slideouttoleft;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft;transform:translateX(-100%);animation-name:slideouttoleft}.slide.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromright;-moz-transform:translateX(0);-moz-animation-name:slideinfromright;transform:translateX(0);animation-name:slideinfromright}.slide.out.reverse{-webkit-transform:translate3d(100%,0,0);-webkit-animation-name:slideouttoright;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright;transform:translateX(100%);animation-name:slideouttoright}.slide.in.reverse{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromleft;-moz-transform:translateX(0);-moz-animation-name:slideinfromleft;transform:translateX(0);animation-name:slideinfromleft}.slidefade.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft;-webkit-animation-duration:225ms;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft;-moz-animation-duration:225ms;transform:translateX(-100%);animation-name:slideouttoleft;animation-duration:225ms}.slidefade.in{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-webkit-animation-duration:200ms;-moz-transform:translateX(0);-moz-animation-name:fadein;-moz-animation-duration:200ms;transform:translateX(0);animation-name:fadein;animation-duration:200ms}.slidefade.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright;-webkit-animation-duration:200ms;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright;-moz-animation-duration:200ms;transform:translateX(100%);animation-name:slideouttoright;animation-duration:200ms}.slidefade.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-webkit-animation-duration:200ms;-moz-transform:translateX(0);-moz-animation-name:fadein;-moz-animation-duration:200ms;transform:translateX(0);animation-name:fadein;animation-duration:200ms}.slidedown.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms}.slidedown.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfromtop;-webkit-animation-duration:250ms;-moz-transform:translateY(0);-moz-animation-name:slideinfromtop;-moz-animation-duration:250ms;transform:translateY(0);animation-name:slideinfromtop;animation-duration:250ms}.slidedown.in.reverse{-webkit-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-name:fadein;-moz-animation-duration:150ms;animation-name:fadein;animation-duration:150ms}.slidedown.out.reverse{-webkit-transform:translateY(-100%);-webkit-animation-name:slideouttotop;-webkit-animation-duration:200ms;-moz-transform:translateY(-100%);-moz-animation-name:slideouttotop;-moz-animation-duration:200ms;transform:translateY(-100%);animation-name:slideouttotop;animation-duration:200ms}@-webkit-keyframes slideinfromtop{from{-webkit-transform:translateY(-100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfromtop{from{-moz-transform:translateY(-100%)}to{-moz-transform:translateY(0)}}@keyframes slideinfromtop{from{transform:translateY(-100%)}to{transform:translateY(0)}}@-webkit-keyframes slideouttotop{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(-100%)}}@-moz-keyframes slideouttotop{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(-100%)}}@keyframes slideouttotop{from{transform:translateY(0)}to{transform:translateY(-100%)}}.slideup.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms}.slideup.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfrombottom;-webkit-animation-duration:250ms;-moz-transform:translateY(0);-moz-animation-name:slideinfrombottom;-moz-animation-duration:250ms;transform:translateY(0);animation-name:slideinfrombottom;animation-duration:250ms}.slideup.in.reverse{-webkit-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-name:fadein;-moz-animation-duration:150ms;animation-name:fadein;animation-duration:150ms}.slideup.out.reverse{-webkit-transform:translateY(100%);-webkit-animation-name:slideouttobottom;-webkit-animation-duration:200ms;-moz-transform:translateY(100%);-moz-animation-name:slideouttobottom;-moz-animation-duration:200ms;transform:translateY(100%);animation-name:slideouttobottom;animation-duration:200ms}@-webkit-keyframes slideinfrombottom{from{-webkit-transform:translateY(100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfrombottom{from{-moz-transform:translateY(100%)}to{-moz-transform:translateY(0)}}@keyframes slideinfrombottom{from{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes slideouttobottom{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(100%)}}@-moz-keyframes slideouttobottom{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(100%)}}@keyframes slideouttobottom{from{transform:translateY(0)}to{transform:translateY(100%)}}.viewport-flip{-webkit-perspective:1000;-moz-perspective:1000;perspective:1000;position:absolute}.flip{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-moz-backface-visibility:hidden;-moz-transform:translateX(0);backface-visibility:hidden;transform:translateX(0)}.flip.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:175ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:175ms;transform:rotateY(-90deg) scale(.9);animation-name:flipouttoleft;animation-duration:175ms}.flip.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:225ms;-moz-animation-name:flipintoright;-moz-animation-duration:225ms;animation-name:flipintoright;animation-duration:225ms}.flip.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright;transform:rotateY(90deg) scale(.9);animation-name:flipouttoright}.flip.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft;animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@keyframes flipouttoleft{from{transform:rotateY(0)}to{transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@keyframes flipouttoright{from{transform:rotateY(0)}to{transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{-webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{-moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoleft{from{transform:rotateY(-90deg) scale(.9)}to{transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{-webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{-moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoright{from{transform:rotateY(90deg) scale(.9)}to{transform:rotateY(0)}}.viewport-turn{-webkit-perspective:200px;-moz-perspective:200px;-ms-perspective:200px;perspective:200px;position:absolute}.turn{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-webkit-transform-origin:0;-moz-backface-visibility:hidden;-moz-transform:translateX(0);-moz-transform-origin:0;backface-visibility :hidden;transform:translateX(0);transform-origin:0}.turn.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:125ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:125ms;transform:rotateY(-90deg) scale(.9);animation-name:flipouttoleft;animation-duration:125ms}.turn.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:250ms;-moz-animation-name:flipintoright;-moz-animation-duration:250ms;animation-name:flipintoright;animation-duration:250ms}.turn.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright;transform:rotateY(90deg) scale(.9);animation-name:flipouttoright}.turn.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft;animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@keyframes flipouttoleft{from{transform:rotateY(0)}to{transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@keyframes flipouttoright{from{transform:rotateY(0)}to{transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{-webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{-moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoleft{from{transform:rotateY(-90deg) scale(.9)}to{transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{-webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{-moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoright{from{transform:rotateY(90deg) scale(.9)}to{transform:rotateY(0)}}.flow{-webkit-transform-origin:50% 30%;-webkit-box-shadow:0 0 20px rgba(0,0,0,.4);-moz-transform-origin:50% 30%;-moz-box-shadow:0 0 20px rgba(0,0,0,.4);transform-origin:50% 30%;box-shadow:0 0 20px rgba(0,0,0,.4)}.ui-dialog.flow{-webkit-transform-origin:none;-webkit-box-shadow:none;-moz-transform-origin:none;-moz-box-shadow:none;transform-origin:none;box-shadow:none}.flow.out{-webkit-transform:translateX(-100%) scale(.7);-webkit-animation-name:flowouttoleft;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(-100%) scale(.7);-moz-animation-name:flowouttoleft;-moz-animation-timing-function:ease;-moz-animation-duration:350ms;transform:translateX(-100%) scale(.7);animation-name:flowouttoleft;animation-timing-function:ease;animation-duration:350ms}.flow.in{-webkit-transform:translateX(0) scale(1);-webkit-animation-name:flowinfromright;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(0) scale(1);-moz-animation-name:flowinfromright;-moz-animation-timing-function:ease;-moz-animation-duration:350ms;transform:translateX(0) scale(1);animation-name:flowinfromright;animation-timing-function:ease;animation-duration:350ms}.flow.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:flowouttoright;-moz-transform:translateX(100%);-moz-animation-name:flowouttoright;transform:translateX(100%);animation-name:flowouttoright}.flow.in.reverse{-webkit-animation-name:flowinfromleft;-moz-animation-name:flowinfromleft;animation-name:flowinfromleft}@-webkit-keyframes flowouttoleft{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(-100%) scale(.7)}}@-moz-keyframes flowouttoleft{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(-100%) scale(.7)}}@keyframes flowouttoleft{0%{transform:translateX(0) scale(1)}60%,70%{transform:translateX(0) scale(.7)}100%{transform:translateX(-100%) scale(.7)}}@-webkit-keyframes flowouttoright{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(100%) scale(.7)}}@-moz-keyframes flowouttoright{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(100%) scale(.7)}}@keyframes flowouttoright{0%{transform:translateX(0) scale(1)}60%,70%{transform:translateX(0) scale(.7)}100%{transform:translateX(100%) scale(.7)}}@-webkit-keyframes flowinfromleft{0%{-webkit-transform:translateX(-100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromleft{0%{-moz-transform:translateX(-100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}@keyframes flowinfromleft{0%{transform:translateX(-100%) scale(.7)}30%,40%{transform:translateX(0) scale(.7)}100%{transform:translateX(0) scale(1)}}@-webkit-keyframes flowinfromright{0%{-webkit-transform:translateX(100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromright{0%{-moz-transform:translateX(100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}@keyframes flowinfromright{0%{transform:translateX(100%) scale(.7)}30%,40%{transform:translateX(0) scale(.7)}100%{transform:translateX(0) scale(1)}}.ui-grid-a,.ui-grid-b,.ui-grid-c,.ui-grid-d{overflow:hidden}.ui-block-a,.ui-block-b,.ui-block-c,.ui-block-d,.ui-block-e{margin:0;padding:0;border:0;float:left;min-height:1px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui-grid-solo .ui-block-a{display:block;float:none}.ui-grid-a .ui-block-a,.ui-grid-a .ui-block-b{width:49.95%}.ui-grid-a>:nth-child(n){width:50%;margin-right:-.5px}.ui-grid-a .ui-block-a{clear:left}.ui-grid-b .ui-block-a,.ui-grid-b .ui-block-b,.ui-grid-b .ui-block-c{width:33.25%}.ui-grid-b>:nth-child(n){width:33.333%;margin-right:-.5px}.ui-grid-b .ui-block-a{clear:left}.ui-grid-c .ui-block-a,.ui-grid-c .ui-block-b,.ui-grid-c .ui-block-c,.ui-grid-c .ui-block-d{width:24.925%}.ui-grid-c>:nth-child(n){width:25%;margin-right:-.5px}.ui-grid-c .ui-block-a{clear:left}.ui-grid-d .ui-block-a,.ui-grid-d .ui-block-b,.ui-grid-d .ui-block-c,.ui-grid-d .ui-block-d,.ui-grid-d .ui-block-e{width:19.925%}.ui-grid-d>:nth-child(n){width:20%}.ui-grid-d .ui-block-a{clear:left}@media all and (max-width:35em){.ui-responsive .ui-block-a,.ui-responsive .ui-block-b,.ui-responsive .ui-block-c,.ui-responsive .ui-block-d,.ui-responsive .ui-block-e{width:100%;float:none}}.ui-header-fixed,.ui-footer-fixed{left:0;right:0;width:100%;position:fixed;z-index:1000}.ui-header-fixed{top:-1px;padding-top:1px}.ui-header-fixed.ui-fixed-hidden{top:0;padding-top:0}.ui-footer-fixed{bottom:-1px;padding-bottom:1px}.ui-footer-fixed.ui-fixed-hidden{bottom:0;padding-bottom:0}.ui-header-fullscreen,.ui-footer-fullscreen{filter:Alpha(Opacity=90);opacity:.9}.ui-page-header-fixed{padding-top:2.6875em}.ui-page-footer-fixed{padding-bottom:2.6875em}.ui-page-header-fullscreen>.ui-content,.ui-page-footer-fullscreen>.ui-content{padding:0}.ui-fixed-hidden{position:absolute}.ui-page-header-fullscreen .ui-fixed-hidden,.ui-page-footer-fullscreen .ui-fixed-hidden{left:-9999px}.ui-header-fixed .ui-btn,.ui-footer-fixed .ui-btn{z-index:10}.ui-android-2x-fixed .ui-li-has-thumb{-webkit-transform:translate3d(0,0,0)}.ui-navbar{max-width:100%}.ui-navbar.ui-mini{margin:0}.ui-navbar ul:before,.ui-navbar ul:after{content:" ";display:table}.ui-navbar ul:after{clear:both}.ui-navbar ul{list-style:none;margin:0;padding:0;position:relative;display:block;border:0;max-width:100%;overflow:visible;zoom:1}.ui-navbar li .ui-btn{display:block;text-align:center;margin:0 -1px 0 0;border-right-width:0}.ui-navbar li .ui-btn-icon-right .ui-icon{right:6px}.ui-navbar li:last-child .ui-btn,.ui-navbar .ui-grid-duo .ui-block-b .ui-btn{margin-right:0;border-right-width:1px}.ui-header .ui-navbar li:last-child .ui-btn,.ui-footer .ui-navbar li:last-child .ui-btn,.ui-header .ui-navbar .ui-grid-duo .ui-block-b .ui-btn,.ui-footer .ui-navbar .ui-grid-duo .ui-block-b .ui-btn{margin-right:-1px;border-right-width:0}.ui-navbar .ui-grid-duo li.ui-block-a:last-child .ui-btn{margin-right:-1px;border-right-width:1px}.ui-header .ui-navbar li .ui-btn,.ui-footer .ui-navbar li .ui-btn{border-top-width:0;border-bottom-width:0}.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn,.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn{margin-right:-5px}.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn,.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn{margin-right:-4px}.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon,.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon{right:8px}.ui-navbar li .ui-btn .ui-btn-inner{padding-top:.7em;padding-bottom:.8em}.ui-navbar li .ui-btn-icon-top .ui-btn-inner{padding-top:30px}.ui-navbar li .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:30px}.ui-btn{display:block;text-align:center;cursor:pointer;position:relative;margin:.5em 0;padding:0}.ui-mini{margin-top:.25em;margin-bottom:.25em}.ui-btn-left,.ui-btn-right,.ui-input-clear,.ui-btn-inline,.ui-grid-a .ui-btn,.ui-grid-b .ui-btn,.ui-grid-c .ui-btn,.ui-grid-d .ui-btn,.ui-grid-e .ui-btn,.ui-grid-solo .ui-btn{margin-right:5px;margin-left:5px}.ui-btn-inner{font-size:16px;padding:.6em 20px;min-width:.75em;display:block;position:relative;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;zoom:1}.ui-btn input,.ui-btn button{z-index:2}.ui-btn-left,.ui-btn-right,.ui-btn-inline{display:inline-block;vertical-align:middle}.ui-mobile .ui-btn-left,.ui-mobile .ui-btn-right,.ui-btn-left>.ui-btn,.ui-btn-right>.ui-btn{margin:0}.ui-btn-block{display:block}.ui-header>.ui-btn,.ui-footer>.ui-btn{display:inline-block;margin:0}.ui-header .ui-btn-block,.ui-footer .ui-btn-block{display:block}.ui-header .ui-btn-inner,.ui-footer .ui-btn-inner,.ui-mini .ui-btn-inner{font-size:12.5px;padding:.55em 11px .5em}.ui-fullsize .ui-btn-inner,.ui-fullsize .ui-btn-inner{font-size:16px;padding:.6em 20px}.ui-btn-icon-notext{width:24px;height:24px}.ui-btn-icon-notext .ui-btn-inner{padding:0;height:100%}.ui-btn-icon-notext .ui-btn-inner .ui-icon{margin:2px 1px 2px 3px;float:left}.ui-btn-text{position:relative;z-index:1;width:100%;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}div.ui-btn-text{width:auto}.ui-btn-icon-notext .ui-btn-text{position:absolute;left:-9999px}.ui-btn-icon-left .ui-btn-inner{padding-left:40px}.ui-btn-icon-right .ui-btn-inner{padding-right:40px}.ui-btn-icon-top .ui-btn-inner{padding-top:40px}.ui-btn-icon-bottom .ui-btn-inner{padding-bottom:40px}.ui-header .ui-btn-icon-left .ui-btn-inner,.ui-footer .ui-btn-icon-left .ui-btn-inner,.ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-mini .ui-btn-icon-left .ui-btn-inner{padding-left:30px}.ui-header .ui-btn-icon-right .ui-btn-inner,.ui-footer .ui-btn-icon-right .ui-btn-inner,.ui-mini.ui-btn-icon-right .ui-btn-inner,.ui-mini .ui-btn-icon-right .ui-btn-inner{padding-right:30px}.ui-header .ui-btn-icon-top .ui-btn-inner,.ui-footer .ui-btn-icon-top .ui-btn-inner{padding:30px 3px .5em}.ui-mini.ui-btn-icon-top .ui-btn-inner,.ui-mini .ui-btn-icon-top .ui-btn-inner{padding-top:30px}.ui-header .ui-btn-icon-bottom .ui-btn-inner,.ui-footer .ui-btn-icon-bottom .ui-btn-inner{padding:.55em 3px 30px}.ui-mini.ui-btn-icon-bottom .ui-btn-inner,.ui-mini .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:30px}.ui-btn-inner{-webkit-border-radius:inherit;border-radius:inherit}.ui-btn-icon-notext .ui-icon{display:block;z-index:0}.ui-btn-icon-left>.ui-btn-inner>.ui-icon,.ui-btn-icon-right>.ui-btn-inner>.ui-icon{position:absolute;top:50%;margin-top:-9px}.ui-btn-icon-top .ui-btn-inner .ui-icon,.ui-btn-icon-bottom .ui-btn-inner .ui-icon{position:absolute;left:50%;margin-left:-9px}.ui-btn-icon-left .ui-icon{left:10px}.ui-btn-icon-right .ui-icon{right:10px}.ui-btn-icon-top .ui-icon{top:10px}.ui-btn-icon-bottom .ui-icon{top:auto;bottom:10px}.ui-header .ui-btn-icon-left .ui-icon,.ui-footer .ui-btn-icon-left .ui-icon,.ui-mini.ui-btn-icon-left .ui-icon,.ui-mini .ui-btn-icon-left .ui-icon{left:5px}.ui-header .ui-btn-icon-right .ui-icon,.ui-footer .ui-btn-icon-right .ui-icon,.ui-mini.ui-btn-icon-right .ui-icon,.ui-mini .ui-btn-icon-right .ui-icon{right:5px}.ui-header .ui-btn-icon-top .ui-icon,.ui-footer .ui-btn-icon-top .ui-icon,.ui-mini.ui-btn-icon-top .ui-icon,.ui-mini .ui-btn-icon-top .ui-icon{top:5px}.ui-header .ui-btn-icon-bottom .ui-icon,.ui-footer .ui-btn-icon-bottom .ui-icon,.ui-mini.ui-btn-icon-bottom .ui-icon,.ui-mini .ui-btn-icon-bottom .ui-icon{bottom:5px}.ui-btn-hidden{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:none;cursor:pointer;background:#fff;background:rgba(255,255,255,0);filter:Alpha(Opacity=0);opacity:.1;font-size:1px;border:0;text-indent:-9999px}.ui-disabled .ui-btn-hidden{display:none}.ui-disabled{z-index:1}.ui-field-contain .ui-btn.ui-submit{margin:0}label.ui-submit{font-size:16px;line-height:1.4;font-weight:400;margin:0 0 .3em;display:block}@media all and (min-width:28em){.ui-field-contain label.ui-submit{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-btn.ui-submit{width:78%;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui-hide-label .ui-btn.ui-submit{width:auto;display:block}}.ui-collapsible-inset{margin:.5em 0}.ui-collapsible-heading{font-size:16px;display:block;margin:0 -15px;padding:0;position:relative}.ui-collapsible-inset .ui-collapsible-heading{margin:0}.ui-collapsible-heading .ui-btn{text-align:left;margin:0;border-left-width:0;border-right-width:0}.ui-collapsible-inset .ui-collapsible-heading .ui-btn{border-right-width:1px;border-left-width:1px}.ui-collapsible-collapsed+.ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn{border-top-width:0}.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn{border-top-width:1px}.ui-collapsible-heading .ui-btn-inner{padding-left:12px;padding-right:12px}.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner{padding-left:40px}.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner{padding-right:40px}.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner,.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner{text-align:center}.ui-collapsible-heading .ui-btn-icon-left.ui-mini .ui-btn-inner{padding-left:30px}.ui-collapsible-heading .ui-btn-icon-right.ui-mini .ui-btn-inner{padding-right:30px}.ui-collapsible-heading .ui-btn span.ui-btn{position:absolute;left:6px;top:50%;margin:-12px 0 0 0;width:20px;height:20px;padding:1px 0 1px 2px;text-indent:-9999px}.ui-collapsible-heading .ui-btn span.ui-btn .ui-btn-inner{padding:10px 0}.ui-collapsible-heading .ui-btn span.ui-btn .ui-icon{left:0;margin-top:-10px}.ui-collapsible-heading-status{position:absolute;top:-9999px;left:0}.ui-collapsible-content{display:block;margin:0 -15px;padding:10px 15px;border-left-width:0;border-right-width:0;border-top:0;background-image:none}.ui-collapsible-inset .ui-collapsible-content{margin:0;border-right-width:1px;border-left-width:1px}.ui-collapsible-content-collapsed{display:none}.ui-collapsible-set>.ui-collapsible.ui-corner-all{-webkit-border-radius:0;border-radius:0}.ui-collapsible-heading,.ui-collapsible-heading>.ui-btn{-webkit-border-radius:inherit;border-radius:inherit}.ui-collapsible-set .ui-collapsible.ui-first-child{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-collapsible-content,.ui-collapsible-set .ui-collapsible.ui-last-child{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-collapsible-themed-content:not(.ui-collapsible-collapsed)>.ui-collapsible-heading{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.ui-collapsible-set{margin:.5em 0}.ui-collapsible-set .ui-collapsible{margin:-1px 0 0}.ui-collapsible-set .ui-collapsible.ui-first-child{margin-top:0}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0;zoom:1}.ui-controlgroup.ui-mini,fieldset.ui-controlgroup.ui-mini{margin:.25em 0}.ui-field-contain .ui-controlgroup,.ui-field-contain fieldset.ui-controlgroup{margin:0}.ui-bar .ui-controlgroup{margin:0 5px}.ui-controlgroup-label{font-size:16px;line-height:1.4;font-weight:400;margin:0 0 .4em}.ui-controlgroup-label legend{max-width:100%}.ui-controlgroup-controls label.ui-select,.ui-controlgroup-controls label.ui-submit{position:absolute;left:-9999px}.ui-controlgroup li{list-style:none}.ui-controlgroup .ui-btn{margin:0}.ui-controlgroup .ui-btn-icon-notext{width:auto;height:auto;top:auto}.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner{height:20px;padding:.6em 20px}.ui-controlgroup-horizontal .ui-btn-icon-notext .ui-btn-inner{width:18px}.ui-controlgroup.ui-mini .ui-btn-icon-notext .ui-btn-inner,.ui-header .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner,.ui-footer .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner{height:16px;padding:.55em 11px .5em}.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner .ui-icon{position:absolute;top:50%;right:50%;margin:-9px -9px 0 0}.ui-controlgroup-horizontal .ui-btn-inner{text-align:center}.ui-controlgroup-horizontal.ui-mini .ui-btn-inner{height:16px;line-height:16px}.ui-controlgroup .ui-checkbox label,.ui-controlgroup .ui-radio label{font-size:16px}.ui-controlgroup-horizontal .ui-controlgroup-controls:before,.ui-controlgroup-horizontal .ui-controlgroup-controls:after{content:"";display:table}.ui-controlgroup-horizontal .ui-controlgroup-controls:after{clear:both}.ui-controlgroup-horizontal .ui-controlgroup-controls{display:inline-block;vertical-align:middle;zoom:1}.ui-controlgroup-horizontal .ui-controlgroup-controls>.ui-btn,.ui-controlgroup-horizontal .ui-controlgroup-controls li>.ui-btn,.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal .ui-radio,.ui-controlgroup-horizontal .ui-select{float:left;clear:none;margin:0}.ui-controlgroup-horizontal .ui-select .ui-btn-text{width:auto}.ui-controlgroup-vertical .ui-btn{border-bottom-width:0}.ui-controlgroup-vertical .ui-btn.ui-last-child{border-bottom-width:1px}.ui-controlgroup-horizontal .ui-btn{border-right-width:0}.ui-controlgroup-horizontal .ui-btn.ui-last-child{border-right-width:1px}.ui-controlgroup .ui-btn-corner-all{-webkit-border-radius:0;border-radius:0}.ui-controlgroup .ui-controlgroup-controls,.ui-controlgroup .ui-radio,.ui-controlgroup .ui-checkbox,.ui-controlgroup .ui-select,.ui-controlgroup li{-webkit-border-radius:inherit;border-radius:inherit}.ui-controlgroup-vertical .ui-btn.ui-first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-controlgroup-vertical .ui-btn.ui-last-child{-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-controlgroup-horizontal .ui-btn.ui-first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-controlgroup-horizontal .ui-btn.ui-last-child{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-controlgroup .ui-shadow:not(.ui-focus){-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}@media all and (min-width:28em){.ui-field-contain .ui-controlgroup-label{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-controlgroup-controls{width:78%;display:inline-block}.ui-field-contain .ui-controlgroup .ui-select{width:100%;display:block}.ui-field-contain .ui-controlgroup-horizontal .ui-select{width:auto}.ui-hide-label .ui-controlgroup-controls{width:100%}}.ui-dialog{background:none!important}.ui-dialog-contain{width:92.5%;max-width:500px;margin:10% auto 15px;padding:0;position:relative;top:-15px}.ui-dialog-contain>.ui-header,.ui-dialog-contain>.ui-content,.ui-dialog-contain>.ui-footer{display:block;position:relative;width:auto;margin:0}.ui-dialog-contain>.ui-header{border:0;overflow:hidden;z-index:10;padding:0}.ui-dialog-contain>.ui-content{padding:15px}.ui-dialog-contain>.ui-footer{z-index:10;padding:0 15px}.ui-popup-open .ui-header-fixed,.ui-popup-open .ui-footer-fixed{position:absolute!important}.ui-popup-screen{background-image:url(data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==);top:0;left:0;right:0;bottom:1px;position:absolute;filter:Alpha(Opacity=0);opacity:0;z-index:1099}.ui-popup-screen.in{opacity:.5;filter:Alpha(Opacity=50)}.ui-popup-screen.out{opacity:0;filter:Alpha(Opacity=0)}.ui-popup-container{z-index:1100;display:inline-block;position:absolute;padding:0;outline:0}.ui-popup{position:relative}.ui-popup.ui-content,.ui-popup .ui-content{overflow:visible}.ui-popup>p,.ui-popup>h1,.ui-popup>h2,.ui-popup>h3,.ui-popup>h4,.ui-popup>h5,.ui-popup>h6{margin:.5em 7px}.ui-popup>span{display:block;margin:.5em 7px}.ui-popup .ui-title{font-size:16px;font-weight:700;margin-top:.5em;margin-bottom:.5em}.ui-popup-container .ui-content>p,.ui-popup-container .ui-content>h1,.ui-popup-container .ui-content>h2,.ui-popup-container .ui-content>h3,.ui-popup-container .ui-content>h4,.ui-popup-container .ui-content>h5,.ui-popup-container .ui-content>h6{margin:.5em 0}.ui-popup-container .ui-content>span{margin:0}.ui-popup-container .ui-content>p:first-child,.ui-popup-container .ui-content>h1:first-child,.ui-popup-container .ui-content>h2:first-child,.ui-popup-container .ui-content>h3:first-child,.ui-popup-container .ui-content>h4:first-child,.ui-popup-container .ui-content>h5:first-child,.ui-popup-container .ui-content>h6:first-child{margin-top:0}.ui-popup-container .ui-content>p:last-child,.ui-popup-container .ui-content>h1:last-child,.ui-popup-container .ui-content>h2:last-child,.ui-popup-container .ui-content>h3:last-child,.ui-popup-container .ui-content>h4:last-child,.ui-popup-container .ui-content>h5:last-child,.ui-popup-container .ui-content>h6:last-child{margin-bottom:0}.ui-popup>img{width:auto;height:auto;max-width:100%;max-height:100%;vertical-align:middle}.ui-popup:not(.ui-content)>img:only-child,.ui-popup:not(.ui-content)>.ui-btn-left:first-child+img:last-child,.ui-popup:not(.ui-content)>.ui-btn-right:first-child+img:last-child{-webkit-border-radius:inherit;border-radius:inherit}.ui-popup iframe{vertical-align:middle}@media all and (min-width:28em){.ui-popup .ui-field-contain label.ui-submit,.ui-popup .ui-field-contain .ui-controlgroup-label,.ui-popup .ui-field-contain label.ui-select,.ui-popup .ui-field-contain label.ui-input-text{font-size:16px;line-height:1.4;display:block;font-weight:400;margin:0 0 .3em}.ui-popup .ui-field-contain .ui-btn.ui-submit,.ui-popup .ui-field-contain .ui-controlgroup-controls,.ui-popup .ui-field-contain .ui-select,.ui-popup .ui-field-contain input.ui-input-text,.ui-popup .ui-field-contain textarea.ui-input-text,.ui-popup .ui-field-contain .ui-input-search{width:100%;display:block}}.ui-popup>.ui-btn-left,.ui-popup>.ui-btn-right{position:absolute;top:-9px;margin:0;z-index:1101}.ui-popup>.ui-btn-left{left:-9px}.ui-popup>.ui-btn-right{right:-9px}.ui-popup-hidden{top:-99999px;left:-9999px;visibility:hidden}.ui-checkbox,.ui-radio{position:relative;clear:both;margin:0;z-index:1}.ui-checkbox .ui-btn,.ui-radio .ui-btn{text-align:left;z-index:2}.ui-controlgroup .ui-checkbox .ui-btn,.ui-controlgroup .ui-radio .ui-btn{margin:0}.ui-checkbox .ui-btn-inner,.ui-radio .ui-btn-inner{white-space:normal}.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner{padding-left:45px}.ui-checkbox .ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-left .ui-btn-inner{padding-left:36px}.ui-checkbox .ui-btn-icon-right .ui-btn-inner,.ui-radio .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-checkbox .ui-mini.ui-btn-icon-right .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-right .ui-btn-inner{padding-right:36px}.ui-checkbox .ui-btn-icon-top .ui-btn-inner,.ui-radio .ui-btn-icon-top .ui-btn-inner{padding-right:0;padding-left:0;text-align:center}.ui-checkbox .ui-btn-icon-bottom .ui-btn-inner,.ui-radio .ui-btn-icon-bottom .ui-btn-inner{padding-right:0;padding-left:0;text-align:center}.ui-checkbox .ui-icon,.ui-radio .ui-icon{top:1.1em}.ui-checkbox .ui-btn-icon-left .ui-icon,.ui-radio .ui-btn-icon-left .ui-icon{left:15px}.ui-checkbox .ui-mini.ui-btn-icon-left .ui-icon,.ui-radio .ui-mini.ui-btn-icon-left .ui-icon{left:9px}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right .ui-icon{right:15px}.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon,.ui-radio .ui-mini.ui-btn-icon-right .ui-icon{right:9px}.ui-checkbox .ui-btn-icon-top .ui-icon,.ui-radio .ui-btn-icon-top .ui-icon{top:10px}.ui-checkbox .ui-btn-icon-bottom .ui-icon,.ui-radio .ui-btn-icon-bottom .ui-icon{top:auto;bottom:10px}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right .ui-icon{right:15px}.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon,.ui-radio .ui-mini.ui-btn-icon-right .ui-icon{right:9px}.ui-controlgroup-horizontal .ui-checkbox .ui-icon,.ui-controlgroup-horizontal .ui-radio .ui-icon{display:none}.ui-controlgroup-horizontal .ui-checkbox .ui-btn-inner,.ui-controlgroup-horizontal .ui-radio .ui-btn-inner{padding:.6em 20px}.ui-controlgroup-horizontal .ui-checkbox .ui-mini .ui-btn-inner,.ui-controlgroup-horizontal .ui-radio .ui-mini .ui-btn-inner{padding:.55em 11px .5em}.ui-checkbox input,.ui-radio input{position:absolute;left:20px;top:50%;width:10px;height:10px;margin:-5px 0 0 0;outline:0!important;z-index:1}.ui-field-contain,fieldset.ui-field-contain{padding:.8em 0;margin:0;border-width:0 0 1px;overflow:visible}.ui-field-contain:last-child{border-bottom-width:0}.ui-field-contain{max-width:100%}@media all and (min-width:28em){.ui-field-contain,.ui-mobile fieldset.ui-field-contain{border-width:0;padding:0;margin:1em 0}}.ui-select{display:block;position:relative}.ui-select select{position:absolute;left:-9999px;top:-9999px}.ui-select .ui-btn{opacity:1}.ui-field-contain .ui-select .ui-btn{margin:0}.ui-select .ui-btn select{cursor:pointer;-webkit-appearance:none;left:0;top:0;width:100%;min-height:1.5em;min-height:100%;height:3em;max-height:100%;filter:Alpha(Opacity=0);opacity:0;z-index:2}.ui-select .ui-disabled{opacity:.3}.ui-select .ui-disabled select{display:none}@-moz-document url-prefix(){.ui-select .ui-btn select{opacity:.0001}}.ui-select .ui-btn.ui-select-nativeonly{border-radius:0;border:0}.ui-select .ui-btn.ui-select-nativeonly select{opacity:1;text-indent:0;display:block}.ui-select .ui-disabled.ui-select-nativeonly .ui-btn-inner{opacity:0}.ui-select .ui-btn-icon-right .ui-btn-inner,.ui-select .ui-li-has-count .ui-btn-inner{padding-right:45px}.ui-select .ui-mini.ui-btn-icon-right .ui-btn-inner{padding-right:32px}.ui-select .ui-btn-icon-right.ui-li-has-count .ui-btn-inner{padding-right:80px}.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-btn-inner{padding-right:67px}.ui-select .ui-btn-icon-right .ui-icon{right:15px}.ui-select .ui-mini.ui-btn-icon-right .ui-icon{right:7px}.ui-select .ui-btn-icon-right.ui-li-has-count .ui-li-count{right:45px}.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-li-count{right:32px}label.ui-select{font-size:16px;line-height:1.4;font-weight:400;margin:0 0 .3em;display:block}.ui-select .ui-btn-text,.ui-selectmenu .ui-btn-text{display:block;min-height:1em;overflow:hidden!important}.ui-select .ui-btn-text{text-overflow:ellipsis}.ui-selectmenu{padding:6px;min-width:160px}.ui-selectmenu .ui-listview{margin:0}.ui-selectmenu .ui-btn.ui-li-divider{cursor:default}.ui-screen-hidden,.ui-selectmenu-list .ui-li .ui-icon{display:none}.ui-selectmenu-list .ui-li .ui-icon{display:block}.ui-li.ui-selectmenu-placeholder{display:none}.ui-selectmenu .ui-header{margin:0;padding:0}.ui-selectmenu.ui-popup .ui-header{-webkit-border-top-left-radius:0;border-top-left-radius:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.ui-selectmenu .ui-header .ui-title{margin:.6em 46px .8em}@media all and (min-width:28em){.ui-field-contain label.ui-select{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-select{width:78%;display:inline-block}.ui-hide-label .ui-select{width:100%}}.ui-selectmenu .ui-header h1:after{content:'.';visibility:hidden}label.ui-input-text{font-size:16px;line-height:1.4;display:block;font-weight:400;margin:0 0 .3em}input.ui-input-text,textarea.ui-input-text{background-image:none;padding:.4em;margin:.5em 0;min-height:1.4em;line-height:1.4em;font-size:16px;display:block;width:100%;outline:0}input.ui-mini,.ui-mini input,textarea.ui-mini{font-size:14px}div.ui-input-text input.ui-input-text,div.ui-input-text textarea.ui-input-text,.ui-input-search input.ui-input-text{border:0;width:100%;padding:.4em 0;margin:0;display:block;background:transparent none;outline:0!important}.ui-input-search,div.ui-input-text{margin:.5em 0;background-image:none;position:relative}.ui-input-search{padding:0 30px}div.ui-input-text{padding:0 .4em}div.ui-input-has-clear{padding:0 30px 0 .4em}input.ui-input-text.ui-mini,textarea.ui-input-text.ui-mini,.ui-input-search.ui-mini,div.ui-input-text.ui-mini{margin:.25em 0}.ui-field-contain input.ui-input-text,.ui-field-contain textarea.ui-input-text,.ui-field-contain .ui-input-search,.ui-field-contain div.ui-input-text{margin:0}textarea.ui-input-text{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}input.ui-input-text{-webkit-appearance:none}textarea.ui-input-text{height:50px;-webkit-transition:height 200ms linear;-moz-transition:height 200ms linear;-o-transition:height 200ms linear;transition:height 200ms linear}textarea.ui-mini{height:45px}.ui-icon-searchfield:after{position:absolute;left:7px;top:50%;margin-top:-9px;content:"";width:18px;height:18px;opacity:.5}.ui-input-search .ui-input-clear,.ui-input-text .ui-input-clear{position:absolute;right:0;top:50%;margin-top:-13px}.ui-mini .ui-input-clear{right:-3px}.ui-input-search .ui-input-clear-hidden,.ui-input-text .ui-input-clear-hidden{display:none}input::-moz-placeholder,textarea::-moz-placeholder{color:#aaa}:-ms-input-placeholder{color:#aaa}input[type=number]::-webkit-outer-spin-button{margin:0}@media all and (min-width:28em){.ui-field-contain label.ui-input-text{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain input.ui-input-text,.ui-field-contain textarea.ui-input-text,.ui-field-contain .ui-input-search,.ui-field-contain div.ui-input-text{width:78%;display:inline-block}.ui-field-contain .ui-input-search,.ui-field-contain div.ui-input-text{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui-hide-label input.ui-input-text,.ui-hide-label textarea.ui-input-text,.ui-hide-label .ui-input-search,.ui-hide-label div.ui-input-text,.ui-input-search input.ui-input-text,div.ui-input-text input.ui-input-text{width:100%}}.ui-rangeslider{zoom:1;margin:0}.ui-rangeslider:before,.ui-rangeslider:after{content:"";display:table}.ui-rangeslider:after{clear:both}.ui-rangeslider input.ui-input-text.ui-slider-input{margin:.57143em 0}.ui-rangeslider.ui-mini input.ui-slider-input{margin:.28571em 0}.ui-rangeslider input.ui-slider-input.ui-rangeslider-last{float:right}.ui-rangeslider .ui-rangeslider-sliders{position:relative;overflow:visible;height:30px;margin:.5em 68px}.ui-rangeslider.ui-mini .ui-rangeslider-sliders{margin:.25em 68px}.ui-field-contain .ui-rangeslider input.ui-slider-input,.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input,.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders{margin-top:0;margin-bottom:0}.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track{position:absolute;top:6px;right:0;left:0;margin:0}.ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track{top:8px}.ui-rangeslider .ui-slider-track:first-child .ui-slider-bg{display:none}.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child{background-color:transparent;background:0;border-width:0;height:0}html >body .ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child{height:15px;border-width:1px}html >body .ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track:first-child{height:12px}@media all and (min-width:28em){.ui-field-contain .ui-rangeslider label.ui-slider{float:left}.ui-field-contain .ui-rangeslider input.ui-slider-input{position:relative;z-index:1}.ui-field-contain .ui-rangeslider input.ui-slider-input.ui-rangeslider-first,.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input.ui-rangeslider-first{margin-right:17px}.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders{float:left;width:78%;margin:0 -68px}.ui-field-contain .ui-rangeslider .ui-slider-track,.ui-field-contain .ui-rangeslider.ui-mini .ui-slider-track{right:68px;left:68px}.ui-field-contain.ui-hide-label .ui-rangeslider input.ui-slider-input.ui-rangeslider-first{margin:0}.ui-field-contain.ui-hide-label .ui-rangeslider .ui-rangeslider-sliders,.ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-rangeslider-sliders{width:auto;float:none;margin:0 68px}.ui-field-contain.ui-hide-label .ui-rangeslider .ui-slider-track,.ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-slider-track{right:0;left:0}}.ui-listview{margin:0}ol.ui-listview,ol.ui-listview .ui-li-divider{counter-reset:listnumbering}.ui-content .ui-listview,.ui-panel-inner>.ui-listview{margin:-15px}.ui-collapsible-content>.ui-listview{margin:-10px -15px}.ui-content .ui-listview-inset,.ui-panel-inner .ui-listview-inset{margin:1em 0}.ui-collapsible-content .ui-listview-inset{margin:.5em 0}.ui-listview,.ui-li{list-style:none;padding:0}.ui-li,.ui-li.ui-field-contain{display:block;margin:0;position:relative;overflow:visible;text-align:left;border-width:0;border-top-width:1px}.ui-li.ui-btn,.ui-li.ui-field-contain,.ui-li-divider,.ui-li-static{margin:0}.ui-listview-inset .ui-li{border-right-width:1px;border-left-width:1px}.ui-li.ui-last-child,.ui-li.ui-field-contain.ui-last-child{border-bottom-width:1px}.ui-collapsible-content>.ui-listview:not(.ui-listview-inset)>.ui-li.ui-first-child{border-top-width:0}.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset)>.ui-li.ui-last-child{border-bottom-width:0}.ui-li .ui-btn-text a.ui-link-inherit{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-static{background-image:none}.ui-li-divider{padding:.5em 15px;font-size:14px;font-weight:700}ol.ui-listview .ui-link-inherit:before,ol.ui-listview .ui-li-static:before,.ui-li-dec{font-size:.8em;display:inline-block;padding-right:.3em;font-weight:400;counter-increment:listnumbering;content:counter(listnumbering) ". "}ol.ui-listview .ui-li-jsnumbering:before{content:""!important}.ui-listview .ui-li>.ui-btn-text{-webkit-border-radius:inherit;border-radius:inherit}.ui-listview>.ui-li.ui-first-child,.ui-listview .ui-btn.ui-first-child>.ui-li>.ui-btn-text>.ui-link-inherit{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-listview>.ui-li.ui-last-child,.ui-listview .ui-btn.ui-last-child>.ui-li>.ui-btn-text>.ui-link-inherit,.ui-collapsible-content>.ui-listview:not(.ui-listview-inset),.ui-collapsible-content>.ui-listview:not(.ui-listview-inset) .ui-li.ui-last-child{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-listview>.ui-li.ui-first-child .ui-li-link-alt{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-listview>.ui-li.ui-last-child .ui-li-link-alt{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-listview>.ui-li.ui-first-child .ui-li-thumb:not(.ui-li-icon){-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-listview>.ui-li.ui-last-child .ui-li-thumb:not(.ui-li-icon){-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-li>.ui-btn-inner{display:block;position:relative;padding:0}.ui-li .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li{padding:.7em 15px;display:block}.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-thumb{min-height:59px;padding-left:100px}.ui-li-has-icon .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-icon{min-height:20px;padding-left:40px}.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-count,.ui-li-divider.ui-li-has-count{padding-right:45px}.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow{padding-right:40px}.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow.ui-li-has-count{padding-right:75px}.ui-li-heading{font-size:16px;font-weight:700;display:block;margin:.6em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-desc{font-size:12px;font-weight:400;display:block;margin:-.5em 0 .6em;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}ol.ui-listview>.ui-li .ui-li-heading{display:inline-block;width:100%;margin-left:-1.3em;text-indent:1.3em;vertical-align:middle}ol.ui-listview>.ui-li .ui-li-desc:not(.ui-li-aside){text-indent:1.55em}.ui-li-thumb,.ui-listview .ui-li-icon{position:absolute;left:1px;top:0;max-height:80px;max-width:80px}.ui-listview .ui-li-icon{max-height:16px;max-width:16px;left:10px;top:.9em}.ui-li-thumb,.ui-listview .ui-li-icon,.ui-li-content{float:left;margin-right:10px}.ui-li-aside{float:right;width:50%;text-align:right;margin:.3em 0}@media all and (min-width:480px){.ui-li-aside{width:45%}}.ui-li-divider{cursor:default}.ui-li-has-alt .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-alt{padding-right:53px}.ui-li-has-alt.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-alt.ui-li-has-count{padding-right:88px}.ui-li-has-count .ui-li-count{position:absolute;font-size:11px;font-weight:700;padding:.2em .5em;top:50%;margin-top:-.9em;right:10px}.ui-li-has-count.ui-li-divider .ui-li-count,.ui-li-has-count .ui-link-inherit .ui-li-count{margin-top:-.95em}.ui-li-has-arrow.ui-li-has-count .ui-li-count{right:40px}.ui-li-has-alt.ui-li-has-count .ui-li-count{right:53px}.ui-li-link-alt{position:absolute;width:40px;height:100%;border-width:0;border-left-width:1px;top:0;right:0;margin:0;padding:0;z-index:2}.ui-li-link-alt .ui-btn{overflow:hidden;position:absolute;right:8px;top:50%;margin:-13px 0 0 0;border-bottom-width:1px;z-index:-1}.ui-li-link-alt .ui-btn-inner{padding:0;height:100%;position:absolute;width:100%;top:0;left:0}.ui-li-link-alt .ui-btn .ui-icon{right:50%;margin-right:-9px}.ui-li-link-alt .ui-btn-icon-notext .ui-btn-inner .ui-icon{position:absolute;top:50%;margin-top:-9px}.ui-listview * .ui-btn-inner>.ui-btn>.ui-btn-inner{border-top:0}.ui-listview-filter{border-width:0;overflow:hidden;margin:-15px -15px 15px -15px}.ui-collapsible-content .ui-listview-filter{margin:-10px -15px 10px -15px;border-bottom:inherit}.ui-listview-filter-inset{margin:-15px -5px;background:transparent}.ui-collapsible-content .ui-listview-filter-inset{margin:-5px;border-bottom-width:0}.ui-listview-filter .ui-input-search{margin:5px;width:auto;display:block}.ui-li.ui-screen-hidden{display:none}@media only screen and (min-device-width:768px) and (max-device-width:1024px){.ui-li .ui-btn-text{overflow:visible}}label.ui-slider{font-size:16px;line-height:1.4;font-weight:400;margin:0;display:block}.ui-field-contain label.ui-slider{margin-bottom:.4em}div.ui-slider{height:30px;margin:.5em 0;zoom:1}div.ui-slider.ui-mini{margin:.25em 0}.ui-field-contain div.ui-slider,.ui-field-contain div.ui-slider.ui-mini{margin:0}div.ui-slider:before,div.ui-slider:after{content:"";display:table}div.ui-slider:after{clear:both}input.ui-input-text.ui-slider-input{display:block;float:left;margin:0;padding:4px;width:40px;height:22px;line-height:22px;font-size:14px;border-width:0;background-image:none;font-weight:700;text-align:center;vertical-align:text-bottom;outline:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;-ms-box-sizing:content-box;box-sizing:content-box}.ui-slider-input::-webkit-outer-spin-button,.ui-slider-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ui-slider-track,.ui-slider-switch{position:relative;overflow:visible;height:15px;margin:0 15px 0 68px;top:6px}.ui-slider-track.ui-mini{height:12px;top:8px}.ui-slider-bg{border:0;height:100%}.ui-slider-track .ui-btn.ui-slider-handle,.ui-slider-switch .ui-btn.ui-slider-handle{position:absolute;z-index:1;top:50%;width:28px;height:28px;margin:-15px 0 0 -15px;outline:0}.ui-slider-track.ui-mini .ui-slider-handle{height:14px;width:14px;margin:-8px 0 0 -7px}.ui-slider-handle .ui-btn-inner{padding:0;height:100%}.ui-slider-track.ui-mini .ui-slider-handle .ui-btn-inner{height:30px;width:30px;padding:0;margin:-9px 0 0 -9px;border-top:0}select.ui-slider-switch{display:none}div.ui-slider-switch{display:inline-block;height:32px;width:5.8em;margin:.5em 0;top:0}div.ui-slider-switch:before,div.ui-slider-switch:after{display:none;clear:none}div.ui-slider-switch.ui-mini{width:5em;height:29px;margin:.25em 0;top:0}.ui-field-contain .ui-slider-switch,.ui-field-contain .ui-slider-switch.ui-mini{margin:0}.ui-slider-inneroffset{margin:0 16px;position:relative;z-index:1}.ui-slider-switch.ui-mini .ui-slider-inneroffset{margin:0 15px 0 14px}.ui-slider-switch .ui-btn.ui-slider-handle{margin:1px 0 0 -15px}.ui-slider-switch.ui-mini .ui-slider-handle{width:25px;height:25px;margin:1px 0 0 -13px;padding:0}.ui-slider-handle-snapping{-webkit-transition:left 70ms linear;-moz-transition:left 70ms linear}.ui-slider-switch.ui-mini .ui-slider-handle .ui-btn-inner{height:30px;width:30px;padding:0;margin:0;border-top:0}.ui-slider-switch .ui-slider-label{position:absolute;text-align:center;width:100%;overflow:hidden;font-size:16px;top:0;line-height:2;min-height:100%;border-width:0;white-space:nowrap;cursor:pointer}.ui-slider-switch.ui-mini .ui-slider-label{font-size:14px}.ui-slider-switch .ui-slider-label-a{z-index:1;left:0;text-indent:-1.5em}.ui-slider-switch .ui-slider-label-b{z-index:0;right:0;text-indent:1.5em}@media all and (min-width:28em){.ui-field-contain label.ui-slider{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain div.ui-slider{display:inline-block;width:78%}.ui-field-contain.ui-hide-label div.ui-slider{display:block;width:auto}.ui-field-contain div.ui-slider-switch,.ui-field-contain.ui-hide-label div.ui-slider-switch{display:inline-block;width:5.8em}.ui-field-contain div.ui-slider-switch.ui-mini{width:5em}}.ui-table{border:0;border-collapse:collapse;padding:0;width:100%}.ui-table th,.ui-table td{line-height:1.5em;text-align:left;padding:.4em .5em;vertical-align:top}.ui-table th .ui-btn,.ui-table td .ui-btn{line-height:normal}.ui-table th{font-weight:700}.ui-table caption{text-align:left;margin-bottom:1.4em;opacity:.5}.table-stroke thead th{border-bottom:1px solid #d6d6d6;border-bottom:1px solid rgba(0,0,0,.1)}.table-stroke tbody th,.table-stroke tbody td{border-bottom:1px solid #e6e6e6;border-bottom:1px solid rgba(0,0,0,.05)}.table-stripe tbody tr:nth-child(odd) td,.table-stripe tbody tr:nth-child(odd) th{background-color:#eee;background-color:rgba(0,0,0,.04)}.table-stripe thead th,.table-stripe tbody tr:last-child{border-bottom:1px solid #d6d6d6;border-bottom:1px solid rgba(0,0,0,.1)}.ui-table-columntoggle-btn{float:right;margin-bottom:.8em}.ui-table-columntoggle-popup fieldset{margin:0}@media only all{th.ui-table-priority-6,td.ui-table-priority-6,th.ui-table-priority-5,td.ui-table-priority-5,th.ui-table-priority-4,td.ui-table-priority-4,th.ui-table-priority-3,td.ui-table-priority-3,th.ui-table-priority-2,td.ui-table-priority-2,th.ui-table-priority-1,td.ui-table-priority-1{display:none}}@media screen and (min-width:20em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-1,.ui-table-columntoggle.ui-responsive td.ui-table-priority-1{display:table-cell}}@media screen and (min-width:30em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-2,.ui-table-columntoggle.ui-responsive td.ui-table-priority-2{display:table-cell}}@media screen and (min-width:40em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-3,.ui-table-columntoggle.ui-responsive td.ui-table-priority-3{display:table-cell}}@media screen and (min-width:50em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-4,.ui-table-columntoggle.ui-responsive td.ui-table-priority-4{display:table-cell}}@media screen and (min-width:60em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-5,.ui-table-columntoggle.ui-responsive td.ui-table-priority-5{display:table-cell}}@media screen and (min-width:70em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-6,.ui-table-columntoggle.ui-responsive td.ui-table-priority-6{display:table-cell}}.ui-table-columntoggle th.ui-table-cell-hidden,.ui-table-columntoggle td.ui-table-cell-hidden,.ui-table-columntoggle.ui-responsive th.ui-table-cell-hidden,.ui-table-columntoggle.ui-responsive td.ui-table-cell-hidden{display:none}.ui-table-columntoggle th.ui-table-cell-visible,.ui-table-columntoggle td.ui-table-cell-visible,.ui-table-columntoggle.ui-responsive th.ui-table-cell-visible,.ui-table-columntoggle.ui-responsive td.ui-table-cell-visible{display:table-cell}.ui-table-reflow td .ui-table-cell-label,.ui-table-reflow th .ui-table-cell-label{display:none}@media only all{.ui-table-reflow thead td,.ui-table-reflow thead th{display:none}.ui-table-reflow td,.ui-table-reflow th{text-align:left;display:block}.ui-table-reflow tbody th{margin-top:3em}.ui-table-reflow td .ui-table-cell-label,.ui-table-reflow th .ui-table-cell-label{padding:.4em;min-width:30%;display:inline-block;margin:-.4em 1em -.4em -.4em}.ui-table-reflow th .ui-table-cell-label-top,.ui-table-reflow td .ui-table-cell-label-top{display:block;padding:.4em 0;margin:.4em 0;text-transform:uppercase;font-size:.9em;font-weight:400}}@media (min-width:35em){.ui-table-reflow.ui-responsive{display:table-row-group}.ui-table-reflow.ui-responsive td,.ui-table-reflow.ui-responsive th,.ui-table-reflow.ui-responsive tbody th,.ui-table-reflow.ui-responsive tbody td,.ui-table-reflow.ui-responsive thead td,.ui-table-reflow.ui-responsive thead th{display:table-cell;margin:0}.ui-table-reflow.ui-responsive td .ui-table-cell-label,.ui-table-reflow.ui-responsive th .ui-table-cell-label{display:none}}@media (max-width:35em){.ui-table-reflow.ui-responsive td,.ui-table-reflow.ui-responsive th{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;clear:left}}.ui-panel{width:17em;min-height:100%;max-height:none;border-width:0;position:absolute;top:0;display:block}.ui-panel-closed{width:0;max-height:100%;overflow:hidden;visibility:hidden}.ui-panel-fixed{position:fixed;bottom:-1px;padding-bottom:1px}.ui-panel-display-overlay{z-index:1001}.ui-panel-display-reveal{z-index:0}.ui-panel-display-push{z-index:999}.ui-panel-inner{padding:15px}.ui-panel-content-wrap{position:relative;left:0;min-height:inherit;border:0;z-index:999}.ui-panel-content-wrap-display-overlay,.ui-panel-animate.ui-panel-content-wrap>.ui-header,.ui-panel-content-wrap-closed{position:static}.ui-panel-dismiss{position:absolute;top:0;left:0;height:100%;width:100%;z-index:1002;display:none}.ui-panel-dismiss-open{display:block}.ui-panel-animate{-webkit-transition:-webkit-transform 350ms ease;-moz-transition:-moz-transform 350ms ease;transition:transform 350ms ease}.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal),.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal)>div,.ui-panel-animate.ui-panel-closed.ui-panel-display-reveal>div,.ui-panel-animate.ui-panel-content-wrap,.ui-panel-animate.ui-panel-content-fixed-toolbar{-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0)}.ui-panel-position-left{left:-17em}.ui-panel-animate.ui-panel-position-left.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-left.ui-panel-display-push{left:0;-webkit-transform:translate3d(-17em,0,0);-moz-transform:translate3d(-17em,0,0);transform:translate3d(-17em,0,0)}.ui-panel-position-left.ui-panel-display-reveal,.ui-panel-position-left.ui-panel-open{left:0}.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-push{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.ui-panel-position-right{right:-17em}.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-right.ui-panel-display-push{right:0;-webkit-transform:translate3d(17em,0,0);-moz-transform:translate3d(17em,0,0);transform:translate3d(17em,0,0)}.ui-panel-position-right.ui-panel-display-reveal,.ui-panel-position-right.ui-panel-open{right:0}.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-push{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open,.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open,.ui-panel-dismiss-position-left.ui-panel-dismiss-open{left:17em;right:-17em}.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal,.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push,.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal,.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push{left:0;right:0;-webkit-transform:translate3d(17em,0,0);-moz-transform:translate3d(17em,0,0);transform:translate3d(17em,0,0)}.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open,.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open,.ui-panel-dismiss-position-right.ui-panel-dismiss-open{left:-17em;right:17em}.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal,.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push,.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal,.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push{left:0;right:0;-webkit-transform:translate3d(-17em,0,0);-moz-transform:translate3d(-17em,0,0);transform:translate3d(-17em,0,0)}.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-overlay,.ui-panel-content-wrap-open.ui-panel-content-wrap-display-overlay{left:0}.ui-page-active.ui-page-panel{overflow-x:hidden}.ui-panel-display-reveal{-webkit-box-shadow:inset -5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:inset -5px 0 5px rgba(0,0,0,.15);box-shadow:inset -5px 0 5px rgba(0,0,0,.15)}.ui-panel-position-right.ui-panel-display-reveal{-webkit-box-shadow:inset 5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:inset 5px 0 5px rgba(0,0,0,.15);box-shadow:inset 5px 0 5px rgba(0,0,0,.15)}.ui-panel-display-overlay{-webkit-box-shadow:5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:5px 0 5px rgba(0,0,0,.15);box-shadow:5px 0 5px rgba(0,0,0,.15)}.ui-panel-position-right.ui-panel-display-overlay{-webkit-box-shadow:-5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:-5px 0 5px rgba(0,0,0,.15);box-shadow:-5px 0 5px rgba(0,0,0,.15)}.ui-panel-display-push.ui-panel-open.ui-panel-position-left{border-right-width:1px;margin-right:-1px}.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push{margin-left:1px}.ui-panel-display-push.ui-panel-open.ui-panel-position-right{border-left-width:1px;margin-left:-1px}.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push{margin-right:1px}@media (min-width:55em){.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-left,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-left,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-left,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-left{margin-right:17em}.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-right,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-right,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-right,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-right{margin-left:17em}.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal{width:auto}.ui-responsive-panel .ui-panel-dismiss-display-push{display:none}} \ No newline at end of file diff --git a/bonus/cordova/3000cg/nanhucg/www/css/jquery.mobile.structure-1.3.2.css b/bonus/cordova/3000cg/nanhucg/www/css/jquery.mobile.structure-1.3.2.css new file mode 100755 index 0000000..11573c6 --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/css/jquery.mobile.structure-1.3.2.css @@ -0,0 +1,2314 @@ +/*! +* jQuery Mobile 1.3.2 +* Git HEAD hash: 528cf0e96940644ea644096bfeb913ed920ffaef <> Date: Fri Jul 19 2013 22:17:57 UTC +* http://jquerymobile.com +* +* Copyright 2010, 2013 jQuery Foundation, Inc. and other contributors +* Released under the MIT license. +* http://jquery.org/license +* +*/ + + +/* some unsets - more probably needed */ +.ui-mobile, .ui-mobile body { height: 99.9%; } +.ui-mobile fieldset, .ui-page { padding: 0; margin: 0; } +.ui-mobile a img, .ui-mobile fieldset { border-width: 0; } +.ui-mobile fieldset { min-width: 0; } +/* responsive page widths */ +.ui-mobile-viewport { margin: 0; overflow-x: visible; -webkit-text-size-adjust: 100%; -ms-text-size-adjust:none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } +/* Issue #2066 */ +body.ui-mobile-viewport, +div.ui-mobile-viewport { overflow-x: hidden; } +/* "page" containers - full-screen views, one should always be in view post-pageload */ +.ui-mobile [data-role=page], .ui-mobile [data-role=dialog], .ui-page { top: 0; left: 0; width: 100%; min-height: 100%; position: absolute; display: none; border: 0; } +.ui-mobile .ui-page-active { display: block; overflow: visible; } +/* on ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */ +.ui-page { outline: none; } +/*orientations from js are available */ +@media screen and (orientation: portrait){ +.ui-mobile .ui-page { min-height: 420px; } +} +@media screen and (orientation: landscape){ +.ui-mobile .ui-page { min-height: 300px; } +} +/* loading screen */ +.ui-loading .ui-loader { display: block; } +.ui-loader { display: none; z-index: 9999999; position: fixed; top: 50%; left: 50%; border:0; } +.ui-loader-default { background: none; filter: Alpha(Opacity=18); opacity: .18; width: 46px; height: 46px; margin-left: -23px; margin-top: -23px; } +.ui-loader-verbose { width: 200px; filter: Alpha(Opacity=88); opacity: .88; box-shadow: 0 1px 1px -1px #fff; height: auto; margin-left: -110px; margin-top: -43px; padding: 10px; } +.ui-loader-default h1 { font-size: 0; width: 0; height: 0; overflow: hidden; } +.ui-loader-verbose h1 { font-size: 16px; margin: 0; text-align: center; } +.ui-loader .ui-icon { background-color: #000; display: block; margin: 0; width: 44px; height: 44px; padding: 1px; -webkit-border-radius: 36px; border-radius: 36px; } +.ui-loader-verbose .ui-icon { margin: 0 auto 10px; filter: Alpha(Opacity=75); opacity: .75; } +.ui-loader-textonly { padding: 15px; margin-left: -115px; } +.ui-loader-textonly .ui-icon { display: none; } +.ui-loader-fakefix { position: absolute; } +/*fouc*/ +.ui-mobile-rendering > * { visibility: hidden; } +/*headers, content panels*/ +.ui-bar, .ui-body { position: relative; padding: .4em 15px; overflow: hidden; display: block; clear:both; } +.ui-bar { font-size: 16px; margin: 0; } +.ui-bar h1, .ui-bar h2, .ui-bar h3, .ui-bar h4, .ui-bar h5, .ui-bar h6 { margin: 0; padding: 0; font-size: 16px; display: inline-block; } +.ui-header, .ui-footer { position: relative; zoom: 1; } +.ui-mobile .ui-header, .ui-mobile .ui-footer { border-left-width: 0; border-right-width: 0; } +.ui-header .ui-btn-left, +.ui-header .ui-btn-right, +.ui-footer .ui-btn-left, +.ui-footer .ui-btn-right, +.ui-header-fixed.ui-fixed-hidden .ui-btn-left, +.ui-header-fixed.ui-fixed-hidden .ui-btn-right { position: absolute; top: 3px; } +.ui-header-fixed .ui-btn-left, +.ui-header-fixed .ui-btn-right { top: 4px;} +.ui-header .ui-btn-left, +.ui-footer .ui-btn-left { left: 5px; } +.ui-header .ui-btn-right, +.ui-footer .ui-btn-right { right: 5px; } +.ui-footer > .ui-btn-icon-notext, +.ui-header > .ui-btn-icon-notext, +.ui-header-fixed.ui-fixed-hidden > .ui-btn-icon-notext { top: 6px; } +.ui-header-fixed > .ui-btn-icon-notext { top: 7px;} +.ui-header .ui-title, .ui-footer .ui-title { min-height: 1.1em; text-align: center; font-size: 16px; display: block; margin: .6em 30% .8em; padding: 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; outline: 0 !important; } +.ui-footer .ui-title { margin: .6em 15px .8em; } +/* content area*/ +.ui-content { border-width: 0; overflow: visible; overflow-x: hidden; padding: 15px; } +/* corner styling for dialogs and popups */ +.ui-corner-all > .ui-header:first-child, +.ui-corner-all > .ui-content:first-child, +.ui-corner-all > .ui-footer:first-child { + -webkit-border-top-left-radius: inherit; + border-top-left-radius: inherit; + -webkit-border-top-right-radius: inherit; + border-top-right-radius: inherit; +} +.ui-corner-all > .ui-header:last-child, +.ui-corner-all > .ui-content:last-child, +.ui-corner-all > .ui-footer:last-child { + -webkit-border-bottom-left-radius: inherit; + border-bottom-left-radius: inherit; + -webkit-border-bottom-right-radius: inherit; + border-bottom-right-radius: inherit; +} +/* icons sizing */ +.ui-icon { width: 18px; height: 18px; } +/* non-js content hiding */ +.ui-nojs { position: absolute; left: -9999px; } +/* accessible content hiding */ +.ui-hide-label label.ui-input-text, .ui-hide-label label.ui-select, .ui-hide-label label.ui-slider, .ui-hide-label label.ui-submit, .ui-hide-label .ui-controlgroup-label, +.ui-hidden-accessible { position: absolute !important; left: -9999px; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } +/* Transitions originally inspired by those from jQtouch, nice work, folks */ +.ui-mobile-viewport-transitioning, +.ui-mobile-viewport-transitioning .ui-page { + width: 100%; + height: 100%; + overflow: hidden; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.ui-page-pre-in { + opacity: 0; +} +.in { + -webkit-animation-timing-function: ease-out; + -webkit-animation-duration: 350ms; + -moz-animation-timing-function: ease-out; + -moz-animation-duration: 350ms; + animation-timing-function: ease-out; + animation-duration: 350ms; +} +.out { + -webkit-animation-timing-function: ease-in; + -webkit-animation-duration: 225ms; + -moz-animation-timing-function: ease-in; + -moz-animation-duration: 225ms; + animation-timing-function: ease-in; + animation-duration: 225ms; +} +@-webkit-keyframes fadein { + from { opacity: 0; } + to { opacity: 1; } +} +@-moz-keyframes fadein { + from { opacity: 0; } + to { opacity: 1; } +} +@keyframes fadein { + from { opacity: 0; } + to { opacity: 1; } +} +@-webkit-keyframes fadeout { + from { opacity: 1; } + to { opacity: 0; } +} +@-moz-keyframes fadeout { + from { opacity: 1; } + to { opacity: 0; } +} +@keyframes fadeout { + from { opacity: 1; } + to { opacity: 0; } +} +.fade.out { + opacity: 0; + -webkit-animation-duration: 125ms; + -webkit-animation-name: fadeout; + -moz-animation-duration: 125ms; + -moz-animation-name: fadeout; + animation-duration: 125ms; + animation-name: fadeout; +} +.fade.in { + opacity: 1; + -webkit-animation-duration: 225ms; + -webkit-animation-name: fadein; + -moz-animation-duration: 225ms; + -moz-animation-name: fadein; + animation-duration: 225ms; + animation-name: fadein; +} +.pop { + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + transform-origin: 50% 50%; +} +.pop.in { + -webkit-transform: scale(1); + -webkit-animation-name: popin; + -webkit-animation-duration: 350ms; + -moz-transform: scale(1); + -moz-animation-name: popin; + -moz-animation-duration: 350ms; + transform: scale(1); + animation-name: popin; + animation-duration: 350ms; + opacity: 1; +} +.pop.out { + -webkit-animation-name: fadeout; + -webkit-animation-duration: 100ms; + -moz-animation-name: fadeout; + -moz-animation-duration: 100ms; + animation-name: fadeout; + animation-duration: 100ms; + opacity: 0; +} +.pop.in.reverse { + -webkit-animation-name: fadein; + -moz-animation-name: fadein; + animation-name: fadein; +} +.pop.out.reverse { + -webkit-transform: scale(.8); + -webkit-animation-name: popout; + -moz-transform: scale(.8); + -moz-animation-name: popout; + transform: scale(.8); + animation-name: popout; +} +@-webkit-keyframes popin { + from { + -webkit-transform: scale(.8); + opacity: 0; + } + to { + -webkit-transform: scale(1); + opacity: 1; + } +} +@-moz-keyframes popin { + from { + -moz-transform: scale(.8); + opacity: 0; + } + to { + -moz-transform: scale(1); + opacity: 1; + } +} +@keyframes popin { + from { + transform: scale(.8); + opacity: 0; + } + to { + transform: scale(1); + opacity: 1; + } +} +@-webkit-keyframes popout { + from { + -webkit-transform: scale(1); + opacity: 1; + } + to { + -webkit-transform: scale(.8); + opacity: 0; + } +} +@-moz-keyframes popout { + from { + -moz-transform: scale(1); + opacity: 1; + } + to { + -moz-transform: scale(.8); + opacity: 0; + } +} +@keyframes popout { + from { + transform: scale(1); + opacity: 1; + } + to { + transform: scale(.8); + opacity: 0; + } +} +/* keyframes for slidein from sides */ +@-webkit-keyframes slideinfromright { + from { -webkit-transform: translate3d(100%,0,0); } + to { -webkit-transform: translate3d(0,0,0); } +} +@-moz-keyframes slideinfromright { + from { -moz-transform: translateX(100%); } + to { -moz-transform: translateX(0); } +} +@keyframes slideinfromright { + from { transform: translateX(100%); } + to { transform: translateX(0); } +} +@-webkit-keyframes slideinfromleft { + from { -webkit-transform: translate3d(-100%,0,0); } + to { -webkit-transform: translate3d(0,0,0); } +} +@-moz-keyframes slideinfromleft { + from { -moz-transform: translateX(-100%); } + to { -moz-transform: translateX(0); } +} +@keyframes slideinfromleft { + from { transform: translateX(-100%); } + to { transform: translateX(0); } +} +/* keyframes for slideout to sides */ +@-webkit-keyframes slideouttoleft { + from { -webkit-transform: translate3d(0,0,0); } + to { -webkit-transform: translate3d(-100%,0,0); } +} +@-moz-keyframes slideouttoleft { + from { -moz-transform: translateX(0); } + to { -moz-transform: translateX(-100%); } +} +@keyframes slideouttoleft { + from { transform: translateX(0); } + to { transform: translateX(-100%); } +} +@-webkit-keyframes slideouttoright { + from { -webkit-transform: translate3d(0,0,0); } + to { -webkit-transform: translate3d(100%,0,0); } +} +@-moz-keyframes slideouttoright { + from { -moz-transform: translateX(0); } + to { -moz-transform: translateX(100%); } +} +@keyframes slideouttoright { + from { transform: translateX(0); } + to { transform: translateX(100%); } +} +.slide.out, .slide.in { + -webkit-animation-timing-function: ease-out; + -webkit-animation-duration: 350ms; + -moz-animation-timing-function: ease-out; + -moz-animation-duration: 350ms; + animation-timing-function: ease-out; + animation-duration: 350ms; +} +.slide.out { + -webkit-transform: translate3d(-100%,0,0); + -webkit-animation-name: slideouttoleft; + -moz-transform: translateX(-100%); + -moz-animation-name: slideouttoleft; + transform: translateX(-100%); + animation-name: slideouttoleft; +} +.slide.in { + -webkit-transform: translate3d(0,0,0); + -webkit-animation-name: slideinfromright; + -moz-transform: translateX(0); + -moz-animation-name: slideinfromright; + transform: translateX(0); + animation-name: slideinfromright; +} +.slide.out.reverse { + -webkit-transform: translate3d(100%,0,0); + -webkit-animation-name: slideouttoright; + -moz-transform: translateX(100%); + -moz-animation-name: slideouttoright; + transform: translateX(100%); + animation-name: slideouttoright; +} +.slide.in.reverse { + -webkit-transform: translate3d(0,0,0); + -webkit-animation-name: slideinfromleft; + -moz-transform: translateX(0); + -moz-animation-name: slideinfromleft; + transform: translateX(0); + animation-name: slideinfromleft; +} +.slidefade.out { + -webkit-transform: translateX(-100%); + -webkit-animation-name: slideouttoleft; + -webkit-animation-duration: 225ms; + -moz-transform: translateX(-100%); + -moz-animation-name: slideouttoleft; + -moz-animation-duration: 225ms; + transform: translateX(-100%); + animation-name: slideouttoleft; + animation-duration: 225ms; +} +.slidefade.in { + -webkit-transform: translateX(0); + -webkit-animation-name: fadein; + -webkit-animation-duration: 200ms; + -moz-transform: translateX(0); + -moz-animation-name: fadein; + -moz-animation-duration: 200ms; + transform: translateX(0); + animation-name: fadein; + animation-duration: 200ms; +} +.slidefade.out.reverse { + -webkit-transform: translateX(100%); + -webkit-animation-name: slideouttoright; + -webkit-animation-duration: 200ms; + -moz-transform: translateX(100%); + -moz-animation-name: slideouttoright; + -moz-animation-duration: 200ms; + transform: translateX(100%); + animation-name: slideouttoright; + animation-duration: 200ms; +} +.slidefade.in.reverse { + -webkit-transform: translateX(0); + -webkit-animation-name: fadein; + -webkit-animation-duration: 200ms; + -moz-transform: translateX(0); + -moz-animation-name: fadein; + -moz-animation-duration: 200ms; + transform: translateX(0); + animation-name: fadein; + animation-duration: 200ms; +} +/* slide down */ +.slidedown.out { + -webkit-animation-name: fadeout; + -webkit-animation-duration: 100ms; + -moz-animation-name: fadeout; + -moz-animation-duration: 100ms; + animation-name: fadeout; + animation-duration: 100ms; +} +.slidedown.in { + -webkit-transform: translateY(0); + -webkit-animation-name: slideinfromtop; + -webkit-animation-duration: 250ms; + -moz-transform: translateY(0); + -moz-animation-name: slideinfromtop; + -moz-animation-duration: 250ms; + transform: translateY(0); + animation-name: slideinfromtop; + animation-duration: 250ms; +} +.slidedown.in.reverse { + -webkit-animation-name: fadein; + -webkit-animation-duration: 150ms; + -moz-animation-name: fadein; + -moz-animation-duration: 150ms; + animation-name: fadein; + animation-duration: 150ms; +} +.slidedown.out.reverse { + -webkit-transform: translateY(-100%); + -webkit-animation-name: slideouttotop; + -webkit-animation-duration: 200ms; + -moz-transform: translateY(-100%); + -moz-animation-name: slideouttotop; + -moz-animation-duration: 200ms; + transform: translateY(-100%); + animation-name: slideouttotop; + animation-duration: 200ms; +} +@-webkit-keyframes slideinfromtop { + from { -webkit-transform: translateY(-100%); } + to { -webkit-transform: translateY(0); } +} +@-moz-keyframes slideinfromtop { + from { -moz-transform: translateY(-100%); } + to { -moz-transform: translateY(0); } +} +@keyframes slideinfromtop { + from { transform: translateY(-100%); } + to { transform: translateY(0); } +} +@-webkit-keyframes slideouttotop { + from { -webkit-transform: translateY(0); } + to { -webkit-transform: translateY(-100%); } +} +@-moz-keyframes slideouttotop { + from { -moz-transform: translateY(0); } + to { -moz-transform: translateY(-100%); } +} +@keyframes slideouttotop { + from { transform: translateY(0); } + to { transform: translateY(-100%); } +} +/* slide up */ +.slideup.out { + -webkit-animation-name: fadeout; + -webkit-animation-duration: 100ms; + -moz-animation-name: fadeout; + -moz-animation-duration: 100ms; + animation-name: fadeout; + animation-duration: 100ms; +} +.slideup.in { + -webkit-transform: translateY(0); + -webkit-animation-name: slideinfrombottom; + -webkit-animation-duration: 250ms; + -moz-transform: translateY(0); + -moz-animation-name: slideinfrombottom; + -moz-animation-duration: 250ms; + transform: translateY(0); + animation-name: slideinfrombottom; + animation-duration: 250ms; +} +.slideup.in.reverse { + -webkit-animation-name: fadein; + -webkit-animation-duration: 150ms; + -moz-animation-name: fadein; + -moz-animation-duration: 150ms; + animation-name: fadein; + animation-duration: 150ms; +} +.slideup.out.reverse { + -webkit-transform: translateY(100%); + -webkit-animation-name: slideouttobottom; + -webkit-animation-duration: 200ms; + -moz-transform: translateY(100%); + -moz-animation-name: slideouttobottom; + -moz-animation-duration: 200ms; + transform: translateY(100%); + animation-name: slideouttobottom; + animation-duration: 200ms; +} +@-webkit-keyframes slideinfrombottom { + from { -webkit-transform: translateY(100%); } + to { -webkit-transform: translateY(0); } +} +@-moz-keyframes slideinfrombottom { + from { -moz-transform: translateY(100%); } + to { -moz-transform: translateY(0); } +} +@keyframes slideinfrombottom { + from { transform: translateY(100%); } + to { transform: translateY(0); } +} +@-webkit-keyframes slideouttobottom { + from { -webkit-transform: translateY(0); } + to { -webkit-transform: translateY(100%); } +} +@-moz-keyframes slideouttobottom { + from { -moz-transform: translateY(0); } + to { -moz-transform: translateY(100%); } +} +@keyframes slideouttobottom { + from { transform: translateY(0); } + to { transform: translateY(100%); } +} +/* The properties in this rule are only necessary for the 'flip' transition. + * We need specify the perspective to create a projection matrix. This will add + * some depth as the element flips. The depth number represents the distance of + * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate + * value. + */ +.viewport-flip { + -webkit-perspective: 1000; + -moz-perspective: 1000; + perspective: 1000; + position: absolute; +} +.flip { + -webkit-backface-visibility: hidden; + -webkit-transform: translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ + -moz-backface-visibility: hidden; + -moz-transform: translateX(0); + backface-visibility: hidden; + transform: translateX(0); +} +.flip.out { + -webkit-transform: rotateY(-90deg) scale(.9); + -webkit-animation-name: flipouttoleft; + -webkit-animation-duration: 175ms; + -moz-transform: rotateY(-90deg) scale(.9); + -moz-animation-name: flipouttoleft; + -moz-animation-duration: 175ms; + transform: rotateY(-90deg) scale(.9); + animation-name: flipouttoleft; + animation-duration: 175ms; +} +.flip.in { + -webkit-animation-name: flipintoright; + -webkit-animation-duration: 225ms; + -moz-animation-name: flipintoright; + -moz-animation-duration: 225ms; + animation-name: flipintoright; + animation-duration: 225ms; +} +.flip.out.reverse { + -webkit-transform: rotateY(90deg) scale(.9); + -webkit-animation-name: flipouttoright; + -moz-transform: rotateY(90deg) scale(.9); + -moz-animation-name: flipouttoright; + transform: rotateY(90deg) scale(.9); + animation-name: flipouttoright; +} +.flip.in.reverse { + -webkit-animation-name: flipintoleft; + -moz-animation-name: flipintoleft; + animation-name: flipintoleft; +} +@-webkit-keyframes flipouttoleft { + from { -webkit-transform: rotateY(0); } + to { -webkit-transform: rotateY(-90deg) scale(.9); } +} +@-moz-keyframes flipouttoleft { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(-90deg) scale(.9); } +} +@keyframes flipouttoleft { + from { transform: rotateY(0); } + to { transform: rotateY(-90deg) scale(.9); } +} +@-webkit-keyframes flipouttoright { + from { -webkit-transform: rotateY(0) ; } + to { -webkit-transform: rotateY(90deg) scale(.9); } +} +@-moz-keyframes flipouttoright { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(90deg) scale(.9); } +} +@keyframes flipouttoright { + from { transform: rotateY(0); } + to { transform: rotateY(90deg) scale(.9); } +} +@-webkit-keyframes flipintoleft { + from { -webkit-transform: rotateY(-90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoleft { + from { -moz-transform: rotateY(-90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +@keyframes flipintoleft { + from { transform: rotateY(-90deg) scale(.9); } + to { transform: rotateY(0); } +} +@-webkit-keyframes flipintoright { + from { -webkit-transform: rotateY(90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoright { + from { -moz-transform: rotateY(90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +@keyframes flipintoright { + from { transform: rotateY(90deg) scale(.9); } + to { transform: rotateY(0); } +} +/* The properties in this rule are only necessary for the 'flip' transition. + * We need specify the perspective to create a projection matrix. This will add + * some depth as the element flips. The depth number represents the distance of + * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate + * value. + */ +.viewport-turn { + -webkit-perspective: 200px; + -moz-perspective: 200px; + -ms-perspective: 200px; + perspective: 200px; + position: absolute; +} +.turn { + -webkit-backface-visibility: hidden; + -webkit-transform: translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ + -webkit-transform-origin: 0; + + -moz-backface-visibility: hidden; + -moz-transform: translateX(0); + -moz-transform-origin: 0; + + backface-visibility :hidden; + transform: translateX(0); + transform-origin: 0; +} +.turn.out { + -webkit-transform: rotateY(-90deg) scale(.9); + -webkit-animation-name: flipouttoleft; + -webkit-animation-duration: 125ms; + -moz-transform: rotateY(-90deg) scale(.9); + -moz-animation-name: flipouttoleft; + -moz-animation-duration: 125ms; + transform: rotateY(-90deg) scale(.9); + animation-name: flipouttoleft; + animation-duration: 125ms; +} +.turn.in { + -webkit-animation-name: flipintoright; + -webkit-animation-duration: 250ms; + -moz-animation-name: flipintoright; + -moz-animation-duration: 250ms; + animation-name: flipintoright; + animation-duration: 250ms; + +} +.turn.out.reverse { + -webkit-transform: rotateY(90deg) scale(.9); + -webkit-animation-name: flipouttoright; + -moz-transform: rotateY(90deg) scale(.9); + -moz-animation-name: flipouttoright; + transform: rotateY(90deg) scale(.9); + animation-name: flipouttoright; +} +.turn.in.reverse { + -webkit-animation-name: flipintoleft; + -moz-animation-name: flipintoleft; + animation-name: flipintoleft; +} +@-webkit-keyframes flipouttoleft { + from { -webkit-transform: rotateY(0); } + to { -webkit-transform: rotateY(-90deg) scale(.9); } +} +@-moz-keyframes flipouttoleft { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(-90deg) scale(.9); } +} +@keyframes flipouttoleft { + from { transform: rotateY(0); } + to { transform: rotateY(-90deg) scale(.9); } +} +@-webkit-keyframes flipouttoright { + from { -webkit-transform: rotateY(0) ; } + to { -webkit-transform: rotateY(90deg) scale(.9); } +} +@-moz-keyframes flipouttoright { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(90deg) scale(.9); } +} +@keyframes flipouttoright { + from { transform: rotateY(0); } + to { transform: rotateY(90deg) scale(.9); } +} +@-webkit-keyframes flipintoleft { + from { -webkit-transform: rotateY(-90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoleft { + from { -moz-transform: rotateY(-90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +@keyframes flipintoleft { + from { transform: rotateY(-90deg) scale(.9); } + to { transform: rotateY(0); } +} +@-webkit-keyframes flipintoright { + from { -webkit-transform: rotateY(90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoright { + from { -moz-transform: rotateY(90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +@keyframes flipintoright { + from { transform: rotateY(90deg) scale(.9); } + to { transform: rotateY(0); } +} +/* flow transition */ +.flow { + -webkit-transform-origin: 50% 30%; + -webkit-box-shadow: 0 0 20px rgba(0,0,0,.4); + -moz-transform-origin: 50% 30%; + -moz-box-shadow: 0 0 20px rgba(0,0,0,.4); + transform-origin: 50% 30%; + box-shadow: 0 0 20px rgba(0,0,0,.4); +} +.ui-dialog.flow { + -webkit-transform-origin: none; + -webkit-box-shadow: none; + -moz-transform-origin: none; + -moz-box-shadow: none; + transform-origin: none; + box-shadow: none; +} +.flow.out { + -webkit-transform: translateX(-100%) scale(.7); + -webkit-animation-name: flowouttoleft; + -webkit-animation-timing-function: ease; + -webkit-animation-duration: 350ms; + -moz-transform: translateX(-100%) scale(.7); + -moz-animation-name: flowouttoleft; + -moz-animation-timing-function: ease; + -moz-animation-duration: 350ms; + transform: translateX(-100%) scale(.7); + animation-name: flowouttoleft; + animation-timing-function: ease; + animation-duration: 350ms; +} +.flow.in { + -webkit-transform: translateX(0) scale(1); + -webkit-animation-name: flowinfromright; + -webkit-animation-timing-function: ease; + -webkit-animation-duration: 350ms; + -moz-transform: translateX(0) scale(1); + -moz-animation-name: flowinfromright; + -moz-animation-timing-function: ease; + -moz-animation-duration: 350ms; + transform: translateX(0) scale(1); + animation-name: flowinfromright; + animation-timing-function: ease; + animation-duration: 350ms; +} +.flow.out.reverse { + -webkit-transform: translateX(100%); + -webkit-animation-name: flowouttoright; + -moz-transform: translateX(100%); + -moz-animation-name: flowouttoright; + transform: translateX(100%); + animation-name: flowouttoright; +} +.flow.in.reverse { + -webkit-animation-name: flowinfromleft; + -moz-animation-name: flowinfromleft; + animation-name: flowinfromleft; +} +@-webkit-keyframes flowouttoleft { + 0% { -webkit-transform: translateX(0) scale(1); } + 60%, 70% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(-100%) scale(.7); } +} +@-moz-keyframes flowouttoleft { + 0% { -moz-transform: translateX(0) scale(1); } + 60%, 70% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(-100%) scale(.7); } +} +@keyframes flowouttoleft { + 0% { transform: translateX(0) scale(1); } + 60%, 70% { transform: translateX(0) scale(.7); } + 100% { transform: translateX(-100%) scale(.7); } +} +@-webkit-keyframes flowouttoright { + 0% { -webkit-transform: translateX(0) scale(1); } + 60%, 70% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(100%) scale(.7); } +} +@-moz-keyframes flowouttoright { + 0% { -moz-transform: translateX(0) scale(1); } + 60%, 70% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(100%) scale(.7); } +} +@keyframes flowouttoright { + 0% { transform: translateX(0) scale(1); } + 60%, 70% { transform: translateX(0) scale(.7); } + 100% { transform: translateX(100%) scale(.7); } +} +@-webkit-keyframes flowinfromleft { + 0% { -webkit-transform: translateX(-100%) scale(.7); } + 30%, 40% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(0) scale(1); } +} +@-moz-keyframes flowinfromleft { + 0% { -moz-transform: translateX(-100%) scale(.7); } + 30%, 40% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(0) scale(1); } +} +@keyframes flowinfromleft { + 0% { transform: translateX(-100%) scale(.7); } + 30%, 40% { transform: translateX(0) scale(.7); } + 100% { transform: translateX(0) scale(1); } +} +@-webkit-keyframes flowinfromright { + 0% { -webkit-transform: translateX(100%) scale(.7); } + 30%, 40% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(0) scale(1); } +} +@-moz-keyframes flowinfromright { + 0% { -moz-transform: translateX(100%) scale(.7); } + 30%, 40% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(0) scale(1); } +} +@keyframes flowinfromright { + 0% { transform: translateX(100%) scale(.7); } + 30%, 40% { transform: translateX(0) scale(.7); } + 100% { transform: translateX(0) scale(1); } +} +/* content configurations. */ +.ui-grid-a, .ui-grid-b, .ui-grid-c, .ui-grid-d { overflow: hidden; } +.ui-block-a, .ui-block-b, .ui-block-c, .ui-block-d, .ui-block-e { margin: 0; padding: 0; border: 0; float: left; min-height: 1px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; } +/* grid solo: 100 - single item fallback */ +.ui-grid-solo .ui-block-a { display: block; float: none; } +/* Lower percentages for older browsers (i.e. IE7) to prevent wrapping. -.5px to fix BB5 wrap issue. */ +/* grid a: 50/50 */ +.ui-grid-a .ui-block-a, .ui-grid-a .ui-block-b { width: 49.95%; } +.ui-grid-a > :nth-child(n) { width: 50%; margin-right: -.5px; } +.ui-grid-a .ui-block-a { clear: left; } +/* grid b: 33/33/33 */ +.ui-grid-b .ui-block-a, .ui-grid-b .ui-block-b, .ui-grid-b .ui-block-c { width: 33.25%; } +.ui-grid-b > :nth-child(n) { width: 33.333%; margin-right: -.5px; } +.ui-grid-b .ui-block-a { clear: left; } +/* grid c: 25/25/25/25 */ +.ui-grid-c .ui-block-a, .ui-grid-c .ui-block-b, .ui-grid-c .ui-block-c, .ui-grid-c .ui-block-d { width: 24.925%; } +.ui-grid-c > :nth-child(n) { width: 25%; margin-right: -.5px; } +.ui-grid-c .ui-block-a { clear: left; } +/* grid d: 20/20/20/20/20 */ +.ui-grid-d .ui-block-a, .ui-grid-d .ui-block-b, .ui-grid-d .ui-block-c, .ui-grid-d .ui-block-d, .ui-grid-d .ui-block-e { width: 19.925%; } +.ui-grid-d > :nth-child(n) { width: 20%; } +.ui-grid-d .ui-block-a { clear: left; } +/* preset breakpoint to switch to stacked grid styles below 35em (560px) */ +@media all and (max-width: 35em) { + .ui-responsive .ui-block-a, + .ui-responsive .ui-block-b, + .ui-responsive .ui-block-c, + .ui-responsive .ui-block-d, + .ui-responsive .ui-block-e { + width: 100%; + float:none; + } +} +/* fixed page header & footer configuration */ +.ui-header-fixed, +.ui-footer-fixed { + left: 0; + right: 0; + width: 100%; + position: fixed; + z-index: 1000; +} +.ui-header-fixed { + top: -1px; + padding-top: 1px; +} +.ui-header-fixed.ui-fixed-hidden { + top: 0; + padding-top: 0; +} +.ui-footer-fixed { + bottom: -1px; + padding-bottom: 1px; +} +.ui-footer-fixed.ui-fixed-hidden { + bottom: 0; + padding-bottom: 0; +} +.ui-header-fullscreen, +.ui-footer-fullscreen { + filter: Alpha(Opacity=90); + opacity: .9; +} +.ui-page-header-fixed { + padding-top: 2.6875em; +} +.ui-page-footer-fixed { + padding-bottom: 2.6875em; +} +.ui-page-header-fullscreen > .ui-content, +.ui-page-footer-fullscreen > .ui-content { + padding: 0; +} +.ui-fixed-hidden { + position: absolute; +} +.ui-page-header-fullscreen .ui-fixed-hidden, +.ui-page-footer-fullscreen .ui-fixed-hidden { + left: -9999px; +} +.ui-header-fixed .ui-btn, +.ui-footer-fixed .ui-btn { + z-index: 10; +} +/* workarounds for other widgets */ +.ui-android-2x-fixed .ui-li-has-thumb { + -webkit-transform: translate3d(0,0,0); +} +.ui-navbar { max-width: 100%; } +.ui-navbar.ui-mini { margin: 0; } +.ui-navbar ul:before, .ui-navbar ul:after { content: " "; display: table; } +.ui-navbar ul:after { clear: both; } +.ui-navbar ul { list-style:none; margin: 0; padding: 0; position: relative; display: block; border: 0; max-width: 100%; overflow: visible; zoom: 1; } +.ui-navbar li .ui-btn { display: block; text-align: center; margin: 0 -1px 0 0; border-right-width: 0; } +.ui-navbar li .ui-btn-icon-right .ui-icon { right: 6px; } +/* add border if not in header/footer (full width) */ +.ui-navbar li:last-child .ui-btn, +.ui-navbar .ui-grid-duo .ui-block-b .ui-btn { margin-right: 0; border-right-width: 1px; } +.ui-header .ui-navbar li:last-child .ui-btn, +.ui-footer .ui-navbar li:last-child .ui-btn, +.ui-header .ui-navbar .ui-grid-duo .ui-block-b .ui-btn, +.ui-footer .ui-navbar .ui-grid-duo .ui-block-b .ui-btn { margin-right: -1px; border-right-width: 0; } +.ui-navbar .ui-grid-duo li.ui-block-a:last-child .ui-btn { margin-right: -1px; border-right-width: 1px; } +.ui-header .ui-navbar li .ui-btn, +.ui-footer .ui-navbar li .ui-btn { border-top-width: 0; border-bottom-width: 0; } +/* fixing gaps caused by subpixel problem */ +.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn, +.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn { margin-right: -5px; } +.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn, +.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn, +.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn, +.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn { margin-right: -4px; } +.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon, +.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon, +.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon, +.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon, +.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon, +.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon { right: 8px; } +.ui-navbar li .ui-btn .ui-btn-inner { padding-top: .7em; padding-bottom: .8em } +.ui-navbar li .ui-btn-icon-top .ui-btn-inner { padding-top: 30px; } +.ui-navbar li .ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 30px; } +.ui-btn { display: block; text-align: center; cursor:pointer; position: relative; margin: .5em 0; padding: 0; } +.ui-mini { margin-top: .25em; margin-bottom: .25em; } +.ui-btn-left, .ui-btn-right, .ui-input-clear, .ui-btn-inline, +.ui-grid-a .ui-btn, .ui-grid-b .ui-btn, .ui-grid-c .ui-btn, .ui-grid-d .ui-btn, .ui-grid-e .ui-btn, .ui-grid-solo .ui-btn { margin-right: 5px; margin-left: 5px; } +.ui-btn-inner { font-size: 16px; padding: .6em 20px; min-width: .75em; display: block; position: relative; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; zoom: 1; } +.ui-btn input, .ui-btn button { z-index: 2; } +.ui-btn-left, .ui-btn-right, .ui-btn-inline { display: inline-block; vertical-align: middle; } +.ui-mobile .ui-btn-left, .ui-mobile .ui-btn-right, .ui-btn-left > .ui-btn, .ui-btn-right > .ui-btn { margin: 0; } /* .ui-mobile to increase specificity level */ +.ui-btn-block { display: block; } +.ui-header > .ui-btn, +.ui-footer > .ui-btn { display: inline-block; margin: 0; } +.ui-header .ui-btn-block, +.ui-footer .ui-btn-block { display: block; } +.ui-header .ui-btn-inner, +.ui-footer .ui-btn-inner, +.ui-mini .ui-btn-inner { font-size: 12.5px; padding: .55em 11px .5em; } +.ui-fullsize .ui-btn-inner, +.ui-fullsize .ui-btn-inner { font-size: 16px; padding: .6em 20px; } +.ui-btn-icon-notext { width: 24px; height: 24px; } +.ui-btn-icon-notext .ui-btn-inner { padding: 0; height: 100%; } +.ui-btn-icon-notext .ui-btn-inner .ui-icon { margin: 2px 1px 2px 3px; float: left; } +.ui-btn-text { position: relative; z-index: 1; width: 100%; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; } +div.ui-btn-text { width: auto; } +.ui-btn-icon-notext .ui-btn-text { position: absolute; left: -9999px; } +.ui-btn-icon-left .ui-btn-inner { padding-left: 40px; } +.ui-btn-icon-right .ui-btn-inner { padding-right: 40px; } +.ui-btn-icon-top .ui-btn-inner { padding-top: 40px; } +.ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 40px; } +.ui-header .ui-btn-icon-left .ui-btn-inner, +.ui-footer .ui-btn-icon-left .ui-btn-inner, +.ui-mini.ui-btn-icon-left .ui-btn-inner, +.ui-mini .ui-btn-icon-left .ui-btn-inner { padding-left: 30px; } +.ui-header .ui-btn-icon-right .ui-btn-inner, +.ui-footer .ui-btn-icon-right .ui-btn-inner, +.ui-mini.ui-btn-icon-right .ui-btn-inner, +.ui-mini .ui-btn-icon-right .ui-btn-inner { padding-right: 30px; } +.ui-header .ui-btn-icon-top .ui-btn-inner, +.ui-footer .ui-btn-icon-top .ui-btn-inner { padding: 30px 3px .5em 3px; } +.ui-mini.ui-btn-icon-top .ui-btn-inner, +.ui-mini .ui-btn-icon-top .ui-btn-inner { padding-top: 30px; } +.ui-header .ui-btn-icon-bottom .ui-btn-inner, +.ui-footer .ui-btn-icon-bottom .ui-btn-inner { padding: .55em 3px 30px 3px; } +.ui-mini.ui-btn-icon-bottom .ui-btn-inner, +.ui-mini .ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 30px; } +/* Corner styling inheritance */ +.ui-btn-inner { + -webkit-border-radius: inherit; + border-radius: inherit; +} +/*btn icon positioning*/ +.ui-btn-icon-notext .ui-icon { display: block; z-index: 0;} +.ui-btn-icon-left > .ui-btn-inner > .ui-icon, .ui-btn-icon-right > .ui-btn-inner > .ui-icon { position: absolute; top: 50%; margin-top: -9px; } +.ui-btn-icon-top .ui-btn-inner .ui-icon, .ui-btn-icon-bottom .ui-btn-inner .ui-icon { position: absolute; left: 50%; margin-left: -9px; } +.ui-btn-icon-left .ui-icon { left: 10px; } +.ui-btn-icon-right .ui-icon { right: 10px; } +.ui-btn-icon-top .ui-icon { top: 10px; } +.ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; } +.ui-header .ui-btn-icon-left .ui-icon, +.ui-footer .ui-btn-icon-left .ui-icon, +.ui-mini.ui-btn-icon-left .ui-icon, +.ui-mini .ui-btn-icon-left .ui-icon { left: 5px; } +.ui-header .ui-btn-icon-right .ui-icon, +.ui-footer .ui-btn-icon-right .ui-icon, +.ui-mini.ui-btn-icon-right .ui-icon, +.ui-mini .ui-btn-icon-right .ui-icon { right: 5px; } +.ui-header .ui-btn-icon-top .ui-icon, +.ui-footer .ui-btn-icon-top .ui-icon, +.ui-mini.ui-btn-icon-top .ui-icon, +.ui-mini .ui-btn-icon-top .ui-icon { top: 5px; } +.ui-header .ui-btn-icon-bottom .ui-icon, +.ui-footer .ui-btn-icon-bottom .ui-icon, +.ui-mini.ui-btn-icon-bottom .ui-icon, +.ui-mini .ui-btn-icon-bottom .ui-icon { bottom: 5px; } +/*hiding native button,inputs */ +.ui-btn-hidden { position: absolute; top: 0; left: 0; width: 100%; height: 100%; -webkit-appearance: none; cursor: pointer; background: #fff; background: rgba(255,255,255,0); filter: Alpha(Opacity=0); opacity: .1; font-size: 1px; border: none; text-indent: -9999px; } +/* Fixes IE/WP filter alpha opacity bugs */ +.ui-disabled .ui-btn-hidden { display: none; } +.ui-disabled { z-index: 1; } +.ui-field-contain .ui-btn.ui-submit { margin: 0; } +label.ui-submit { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } +@media all and (min-width: 28em){ + .ui-field-contain label.ui-submit { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } + .ui-field-contain .ui-btn.ui-submit { width: 78%; display: inline-block; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; } + .ui-hide-label .ui-btn.ui-submit { width: auto; display: block; } +} +.ui-collapsible-inset { margin: .5em 0; } +.ui-collapsible-heading { font-size: 16px; display: block; margin: 0 -15px; padding: 0; position: relative; } +.ui-collapsible-inset .ui-collapsible-heading { margin: 0; } +.ui-collapsible-heading .ui-btn { text-align: left; margin: 0; border-left-width: 0; border-right-width: 0; } +.ui-collapsible-inset .ui-collapsible-heading .ui-btn { border-right-width: 1px; border-left-width: 1px; } +.ui-collapsible-collapsed + .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn { border-top-width: 0; } +.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn { border-top-width: 1px; } +.ui-collapsible-heading .ui-btn-inner { padding-left: 12px; padding-right: 12px; } +.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner { padding-left: 40px; } +.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner { padding-right: 40px; } +.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner, +.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner { text-align: center; } +.ui-collapsible-heading .ui-btn-icon-left.ui-mini .ui-btn-inner { padding-left: 30px; } +.ui-collapsible-heading .ui-btn-icon-right.ui-mini .ui-btn-inner { padding-right: 30px; } +.ui-collapsible-heading .ui-btn span.ui-btn { position: absolute; left: 6px; top: 50%; margin: -12px 0 0 0; width: 20px; height: 20px; padding: 1px 0 1px 2px; text-indent: -9999px; } +.ui-collapsible-heading .ui-btn span.ui-btn .ui-btn-inner { padding: 10px 0; } +.ui-collapsible-heading .ui-btn span.ui-btn .ui-icon { left: 0; margin-top: -10px; } +.ui-collapsible-heading-status { position: absolute; top: -9999px; left: 0; } +.ui-collapsible-content { + display: block; + margin: 0 -15px; + padding: 10px 15px; + border-left-width: 0; + border-right-width: 0; + border-top: none; /* Overrides ui-body-* */ + background-image: none; /* Overrides ui-body-* */ +} +.ui-collapsible-inset .ui-collapsible-content { margin: 0; border-right-width: 1px; border-left-width: 1px; } +.ui-collapsible-content-collapsed { display: none; } +.ui-collapsible-set > .ui-collapsible.ui-corner-all { + -webkit-border-radius: 0; + border-radius: 0; +} +.ui-collapsible-heading, +.ui-collapsible-heading > .ui-btn { + -webkit-border-radius: inherit; + border-radius: inherit; +} +.ui-collapsible-set .ui-collapsible.ui-first-child { + -webkit-border-top-right-radius: inherit; + border-top-right-radius: inherit; + -webkit-border-top-left-radius: inherit; + border-top-left-radius: inherit; +} +.ui-collapsible-content, +.ui-collapsible-set .ui-collapsible.ui-last-child { + -webkit-border-bottom-right-radius: inherit; + border-bottom-right-radius: inherit; + -webkit-border-bottom-left-radius: inherit; + border-bottom-left-radius: inherit; +} +.ui-collapsible-themed-content:not(.ui-collapsible-collapsed) > .ui-collapsible-heading { + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; +} +.ui-collapsible-set { margin: .5em 0; } +.ui-collapsible-set .ui-collapsible { margin: -1px 0 0; } +.ui-collapsible-set .ui-collapsible.ui-first-child { margin-top: 0; } +.ui-controlgroup, fieldset.ui-controlgroup { padding: 0; margin: .5em 0; zoom: 1; } +.ui-controlgroup.ui-mini, fieldset.ui-controlgroup.ui-mini { margin: .25em 0; } +.ui-field-contain .ui-controlgroup, .ui-field-contain fieldset.ui-controlgroup { margin: 0; } +.ui-bar .ui-controlgroup { margin: 0 5px; } +.ui-controlgroup-label { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .4em; } +/* Fixes legend not wrapping on IE10 */ +.ui-controlgroup-label legend { max-width: 100%; } +.ui-controlgroup-controls label.ui-select, +.ui-controlgroup-controls label.ui-submit { position: absolute; left: -9999px; } +.ui-controlgroup li { list-style: none; } +.ui-controlgroup .ui-btn { margin: 0; } +.ui-controlgroup .ui-btn-icon-notext { width: auto; height: auto; top: auto; } +.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { height: 20px; padding: .6em 20px .6em 20px } +.ui-controlgroup-horizontal .ui-btn-icon-notext .ui-btn-inner { width: 18px; } +.ui-controlgroup.ui-mini .ui-btn-icon-notext .ui-btn-inner, +.ui-header .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner, +.ui-footer .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { height: 16px; padding: .55em 11px .5em 11px; } +.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner .ui-icon { position: absolute; top: 50%; right: 50%; margin: -9px -9px 0 0; } +.ui-controlgroup-horizontal .ui-btn-inner { text-align: center; } +.ui-controlgroup-horizontal.ui-mini .ui-btn-inner { height: 16px; line-height: 16px; } +.ui-controlgroup .ui-checkbox label, .ui-controlgroup .ui-radio label { font-size: 16px; } +.ui-controlgroup-horizontal .ui-controlgroup-controls:before, +.ui-controlgroup-horizontal .ui-controlgroup-controls:after { content: ""; display: table; } +.ui-controlgroup-horizontal .ui-controlgroup-controls:after { clear: both; } +.ui-controlgroup-horizontal .ui-controlgroup-controls { display: inline-block; vertical-align: middle; zoom: 1; } +.ui-controlgroup-horizontal .ui-controlgroup-controls > .ui-btn, .ui-controlgroup-horizontal .ui-controlgroup-controls li > .ui-btn, +.ui-controlgroup-horizontal .ui-checkbox, .ui-controlgroup-horizontal .ui-radio, +.ui-controlgroup-horizontal .ui-select { float: left; clear: none; margin: 0; } +/* On IE7 the floating selects will be displayed as block if .ui-btn-text has width 100% */ +.ui-controlgroup-horizontal .ui-select .ui-btn-text { width: auto; } +.ui-controlgroup-vertical .ui-btn { border-bottom-width: 0; } +.ui-controlgroup-vertical .ui-btn.ui-last-child { border-bottom-width: 1px; } +.ui-controlgroup-horizontal .ui-btn { border-right-width: 0; } +.ui-controlgroup-horizontal .ui-btn.ui-last-child { border-right-width: 1px; } +.ui-controlgroup .ui-btn-corner-all { + -webkit-border-radius: 0; + border-radius: 0; +} +.ui-controlgroup .ui-controlgroup-controls, +.ui-controlgroup .ui-radio, +.ui-controlgroup .ui-checkbox, +.ui-controlgroup .ui-select, +.ui-controlgroup li { + -webkit-border-radius: inherit; + border-radius: inherit; +} +.ui-controlgroup-vertical .ui-btn.ui-first-child { + -webkit-border-top-left-radius: inherit; + border-top-left-radius: inherit; + -webkit-border-top-right-radius: inherit; + border-top-right-radius: inherit; +} +.ui-controlgroup-vertical .ui-btn.ui-last-child { + -webkit-border-bottom-left-radius: inherit; + border-bottom-left-radius: inherit; + -webkit-border-bottom-right-radius: inherit; + border-bottom-right-radius: inherit; +} +.ui-controlgroup-horizontal .ui-btn.ui-first-child { + -webkit-border-top-left-radius: inherit; + border-top-left-radius: inherit; + -webkit-border-bottom-left-radius: inherit; + border-bottom-left-radius: inherit; +} +.ui-controlgroup-horizontal .ui-btn.ui-last-child { + -webkit-border-top-right-radius: inherit; + border-top-right-radius: inherit; + -webkit-border-bottom-right-radius: inherit; + border-bottom-right-radius: inherit; +} +.ui-controlgroup .ui-shadow:not(.ui-focus) { + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} +@media all and (min-width: 28em){ + .ui-field-contain .ui-controlgroup-label { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } + .ui-field-contain .ui-controlgroup-controls { width: 78%; display: inline-block; } + .ui-field-contain .ui-controlgroup .ui-select { width: 100%; display: block; } + .ui-field-contain .ui-controlgroup-horizontal .ui-select { width: auto; } + .ui-hide-label .ui-controlgroup-controls { width: 100%; } +} +.ui-dialog { + background: none !important; /* this is to ensure that dialog theming does not apply (by default at least) on the page div */ +} +.ui-dialog-contain { + width: 92.5%; + max-width: 500px; + margin: 10% auto 15px auto; + padding: 0; + position: relative; + top: -15px; +} +.ui-dialog-contain > .ui-header, +.ui-dialog-contain > .ui-content, +.ui-dialog-contain > .ui-footer { + display: block; + position: relative; + width: auto; + margin: 0; +} +.ui-dialog-contain > .ui-header { + border: none; + overflow: hidden; + z-index: 10; + padding: 0; +} +.ui-dialog-contain > .ui-content { + padding: 15px; +} +.ui-dialog-contain > .ui-footer { + z-index: 10; + padding: 0 15px; +} +.ui-popup-open .ui-header-fixed, +.ui-popup-open .ui-footer-fixed { + position: absolute !important; /* See line #553 of popup.js */ +} +.ui-popup-screen { + background-image: url(data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==); /* Necessary to set some form of background to ensure element is clickable in IE6/7. While legacy IE won't understand the data-URI'd image, it ensures no additional requests occur in all other browsers with little overhead. */ + top: 0; + left: 0; + right: 0; + bottom: 1px; + position: absolute; + filter: Alpha(Opacity=0); + opacity: 0; + z-index: 1099; +} +.ui-popup-screen.in { + opacity: 0.5; + filter: Alpha(Opacity=50); +} +.ui-popup-screen.out { + opacity: 0; + filter: Alpha(Opacity=0); +} +.ui-popup-container { + z-index: 1100; + display: inline-block; + position: absolute; + padding: 0; + outline: 0; +} +.ui-popup { + position: relative; +} +.ui-popup.ui-content, +.ui-popup .ui-content { + overflow: visible; +} +.ui-popup > p, +.ui-popup > h1, +.ui-popup > h2, +.ui-popup > h3, +.ui-popup > h4, +.ui-popup > h5, +.ui-popup > h6 { + margin: .5em 7px; +} +.ui-popup > span { + display: block; + margin: .5em 7px; +} +.ui-popup .ui-title { + font-size: 16px; + font-weight: bold; + margin-top: .5em; + margin-bottom: .5em; +} +.ui-popup-container .ui-content > p, +.ui-popup-container .ui-content > h1, +.ui-popup-container .ui-content > h2, +.ui-popup-container .ui-content > h3, +.ui-popup-container .ui-content > h4, +.ui-popup-container .ui-content > h5, +.ui-popup-container .ui-content > h6 { + margin: .5em 0; +} +.ui-popup-container .ui-content > span { + margin: 0; +} +.ui-popup-container .ui-content > p:first-child, +.ui-popup-container .ui-content > h1:first-child, +.ui-popup-container .ui-content > h2:first-child, +.ui-popup-container .ui-content > h3:first-child, +.ui-popup-container .ui-content > h4:first-child, +.ui-popup-container .ui-content > h5:first-child, +.ui-popup-container .ui-content > h6:first-child { + margin-top: 0; +} +.ui-popup-container .ui-content > p:last-child, +.ui-popup-container .ui-content > h1:last-child, +.ui-popup-container .ui-content > h2:last-child, +.ui-popup-container .ui-content > h3:last-child, +.ui-popup-container .ui-content > h4:last-child, +.ui-popup-container .ui-content > h5:last-child, +.ui-popup-container .ui-content > h6:last-child { + margin-bottom: 0; +} +.ui-popup > img { + width: auto; + height: auto; + max-width: 100%; + max-height: 100%; + vertical-align: middle; +} +.ui-popup:not(.ui-content) > img:only-child, +.ui-popup:not(.ui-content) > .ui-btn-left:first-child + img:last-child, +.ui-popup:not(.ui-content) > .ui-btn-right:first-child + img:last-child { + -webkit-border-radius: inherit; + border-radius: inherit; +} +.ui-popup iframe { + vertical-align: middle; +} +@media all and (min-width: 28em){ + .ui-popup .ui-field-contain label.ui-submit, + .ui-popup .ui-field-contain .ui-controlgroup-label, + .ui-popup .ui-field-contain label.ui-select, + .ui-popup .ui-field-contain label.ui-input-text { + font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em; + } + .ui-popup .ui-field-contain .ui-btn.ui-submit, + .ui-popup .ui-field-contain .ui-controlgroup-controls, + .ui-popup .ui-field-contain .ui-select, + .ui-popup .ui-field-contain input.ui-input-text, + .ui-popup .ui-field-contain textarea.ui-input-text, + .ui-popup .ui-field-contain .ui-input-search { + width: 100%; display: block; + } +} +.ui-popup > .ui-btn-left, +.ui-popup > .ui-btn-right { + position: absolute; + top: -9px; + margin: 0; + z-index: 1101; +} +.ui-popup > .ui-btn-left { left: -9px; } +.ui-popup > .ui-btn-right { right: -9px; } +.ui-popup-hidden { top: -99999px; left: -9999px; visibility: hidden; } +.ui-checkbox, .ui-radio { position: relative; clear: both; margin: 0; z-index: 1; } +.ui-checkbox .ui-btn, .ui-radio .ui-btn { text-align: left; z-index: 2; } +.ui-controlgroup .ui-checkbox .ui-btn, .ui-controlgroup .ui-radio .ui-btn { margin: 0; } +.ui-checkbox .ui-btn-inner, .ui-radio .ui-btn-inner { white-space: normal; } +.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner { padding-left: 45px; } +.ui-checkbox .ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-left .ui-btn-inner { padding-left: 36px; } +.ui-checkbox .ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 36px; } +.ui-checkbox .ui-btn-icon-top .ui-btn-inner, .ui-radio .ui-btn-icon-top .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; } +.ui-checkbox .ui-btn-icon-bottom .ui-btn-inner, .ui-radio .ui-btn-icon-bottom .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; } +.ui-checkbox .ui-icon, .ui-radio .ui-icon { top: 1.1em; } +.ui-checkbox .ui-btn-icon-left .ui-icon, .ui-radio .ui-btn-icon-left .ui-icon { left: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-left .ui-icon, .ui-radio .ui-mini.ui-btn-icon-left .ui-icon { left: 9px; } +.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; } +.ui-checkbox .ui-btn-icon-top .ui-icon, .ui-radio .ui-btn-icon-top .ui-icon { top: 10px; } +.ui-checkbox .ui-btn-icon-bottom .ui-icon, .ui-radio .ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; } +.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; } +.ui-controlgroup-horizontal .ui-checkbox .ui-icon, +.ui-controlgroup-horizontal .ui-radio .ui-icon { display: none; } +.ui-controlgroup-horizontal .ui-checkbox .ui-btn-inner, +.ui-controlgroup-horizontal .ui-radio .ui-btn-inner { padding: .6em 20px; } +.ui-controlgroup-horizontal .ui-checkbox .ui-mini .ui-btn-inner, +.ui-controlgroup-horizontal .ui-radio .ui-mini .ui-btn-inner { padding: .55em 11px .5em; } +/* input, label positioning */ +.ui-checkbox input,.ui-radio input { position:absolute; left:20px; top:50%; width: 10px; height: 10px; margin:-5px 0 0 0; outline: 0 !important; z-index: 1; } +.ui-field-contain, fieldset.ui-field-contain { padding: .8em 0; margin: 0; border-width: 0 0 1px 0; overflow: visible; } +.ui-field-contain:last-child { border-bottom-width: 0; } +.ui-field-contain { max-width: 100%; } /* This prevents horizontal scrollbar in IE7 */ +@media all and (min-width: 28em){ + .ui-field-contain, .ui-mobile fieldset.ui-field-contain { border-width: 0; padding: 0; margin: 1em 0; } +} +.ui-select { display: block; position: relative; } +.ui-select select { position: absolute; left: -9999px; top: -9999px; } +.ui-select .ui-btn { opacity: 1; } +.ui-field-contain .ui-select .ui-btn { margin: 0; } +/* Fixes #2588: When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select (including "inherit") without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */ +.ui-select .ui-btn select { cursor: pointer; -webkit-appearance: none; left: 0; top:0; width: 100%; min-height: 1.5em; min-height: 100%; height: 3em; max-height: 100%; filter: Alpha(Opacity=0); opacity: 0; z-index: 2; } +.ui-select .ui-disabled { opacity: .3; } +/* Display none because of issues with IE/WP's filter alpha opacity */ +.ui-select .ui-disabled select { display: none; } +@-moz-document url-prefix() { .ui-select .ui-btn select { opacity: 0.0001; }} +.ui-select .ui-btn.ui-select-nativeonly { border-radius: 0; border: 0; } +.ui-select .ui-btn.ui-select-nativeonly select { opacity: 1; text-indent: 0; display: block; } +.ui-select .ui-disabled.ui-select-nativeonly .ui-btn-inner { opacity: 0; } +.ui-select .ui-btn-icon-right .ui-btn-inner, .ui-select .ui-li-has-count .ui-btn-inner { padding-right: 45px; } +.ui-select .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 32px; } +.ui-select .ui-btn-icon-right.ui-li-has-count .ui-btn-inner { padding-right: 80px; } +.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-btn-inner { padding-right: 67px; } +.ui-select .ui-btn-icon-right .ui-icon { right: 15px; } +.ui-select .ui-mini.ui-btn-icon-right .ui-icon { right: 7px; } +.ui-select .ui-btn-icon-right.ui-li-has-count .ui-li-count { right: 45px; } +.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-li-count { right: 32px; } +/* labels */ +label.ui-select { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } +/*listbox*/ +.ui-select .ui-btn-text, .ui-selectmenu .ui-btn-text { display: block; min-height: 1em; overflow: hidden !important; +/* This !important is required for iPad Safari specifically. See https://github.com/jquery/jquery-mobile/issues/2647 */ } +.ui-select .ui-btn-text { text-overflow: ellipsis; } +.ui-selectmenu { padding: 6px; min-width: 160px; } +.ui-selectmenu .ui-listview { margin: 0; } +.ui-selectmenu .ui-btn.ui-li-divider { cursor: default; } +.ui-screen-hidden, .ui-selectmenu-list .ui-li .ui-icon { display: none; } +.ui-selectmenu-list .ui-li .ui-icon { display: block; } +.ui-li.ui-selectmenu-placeholder { display: none; } +.ui-selectmenu .ui-header { margin: 0; padding: 0; } +.ui-selectmenu.ui-popup .ui-header { -webkit-border-top-left-radius: 0; border-top-left-radius: 0; -webkit-border-top-right-radius: 0; border-top-right-radius: 0; } +.ui-selectmenu .ui-header .ui-title { margin: 0.6em 46px 0.8em; } +@media all and (min-width: 28em){ + .ui-field-contain label.ui-select { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } + .ui-field-contain .ui-select { width: 78%; display: inline-block; } + .ui-hide-label .ui-select { width: 100%; } +} +/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button. this shim's content in there */ +.ui-selectmenu .ui-header h1:after { content: '.'; visibility: hidden; } +label.ui-input-text { font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em; } +input.ui-input-text, textarea.ui-input-text { background-image: none; padding: .4em; margin: .5em 0; min-height: 1.4em; line-height: 1.4em; font-size: 16px; display: block; width: 100%; outline: 0; } +input.ui-mini, .ui-mini input, textarea.ui-mini { font-size: 14px; } +div.ui-input-text input.ui-input-text, div.ui-input-text textarea.ui-input-text, +.ui-input-search input.ui-input-text { border: none; width: 100%; padding: .4em 0; margin: 0; display: block; background: transparent none; outline: 0 !important; } +.ui-input-search, div.ui-input-text { margin: .5em 0; background-image: none; position: relative; } +.ui-input-search { padding: 0 30px; } +div.ui-input-text { padding: 0 .4em; } +div.ui-input-has-clear { padding: 0 30px 0 .4em; } +input.ui-input-text.ui-mini, textarea.ui-input-text.ui-mini, +.ui-input-search.ui-mini, div.ui-input-text.ui-mini { margin: .25em 0; } +.ui-field-contain input.ui-input-text, .ui-field-contain textarea.ui-input-text, +.ui-field-contain .ui-input-search, .ui-field-contain div.ui-input-text { margin: 0; } +textarea.ui-input-text { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; } +input.ui-input-text { -webkit-appearance: none; } +textarea.ui-input-text { height: 50px; -webkit-transition: height 200ms linear; -moz-transition: height 200ms linear; -o-transition: height 200ms linear; transition: height 200ms linear; } +textarea.ui-mini { height: 45px; } +.ui-icon-searchfield:after { position: absolute; left: 7px; top: 50%; margin-top: -9px; content: ""; width: 18px; height: 18px; opacity: .5; } +.ui-input-search .ui-input-clear, .ui-input-text .ui-input-clear { position: absolute; right: 0; top: 50%; margin-top: -13px; } +.ui-mini .ui-input-clear { right: -3px; } +.ui-input-search .ui-input-clear-hidden, .ui-input-text .ui-input-clear-hidden { display: none; } +/* Resolves issue #5166: Added to support issue introduced in Firefox 15. We can likely remove this in the future. */ +input::-moz-placeholder, textarea::-moz-placeholder { color: #aaa; } +/* For IE10 */ +:-ms-input-placeholder { color: #aaa; } +/* Resolves issue #5131: Width of textinput depends on its type, for Android 4.1 */ +input[type=number]::-webkit-outer-spin-button { margin: 0; } +@media all and (min-width: 28em){ + .ui-field-contain label.ui-input-text { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0 } + .ui-field-contain input.ui-input-text, + .ui-field-contain textarea.ui-input-text, + .ui-field-contain .ui-input-search, + .ui-field-contain div.ui-input-text { width: 78%; display: inline-block; } + .ui-field-contain .ui-input-search, + .ui-field-contain div.ui-input-text { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; } + .ui-hide-label input.ui-input-text, + .ui-hide-label textarea.ui-input-text, + .ui-hide-label .ui-input-search, + .ui-hide-label div.ui-input-text, + .ui-input-search input.ui-input-text, + div.ui-input-text input.ui-input-text { width: 100%; } +} +.ui-rangeslider { + zoom: 1; + margin: 0; +} +.ui-rangeslider:before, +.ui-rangeslider:after { + content: ""; + display: table; +} +.ui-rangeslider:after { + clear: both; +} +/* Margin-top/bottom: .5em * 16px/14px to make it equal to ui-rangeslider-sliders margin (input font-size is 14px) */ +.ui-rangeslider input.ui-input-text.ui-slider-input { + margin: .57143em 0; +} +.ui-rangeslider.ui-mini input.ui-slider-input { + margin: .28571em 0; +} +.ui-rangeslider input.ui-slider-input.ui-rangeslider-last { + float: right; +} +.ui-rangeslider .ui-rangeslider-sliders { + position: relative; + overflow: visible; + height: 30px; + margin: .5em 68px; +} +.ui-rangeslider.ui-mini .ui-rangeslider-sliders { + margin: .25em 68px; +} +.ui-field-contain .ui-rangeslider input.ui-slider-input, +.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input, +.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders, +.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders { + margin-top: 0; + margin-bottom: 0; +} +.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track { + position: absolute; + top: 6px; + right: 0; + left: 0; + margin: 0; +} +.ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track { + top: 8px; +} +.ui-rangeslider .ui-slider-track:first-child .ui-slider-bg { + display: none; +} +.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child { + background-color: transparent; + background: none; + border-width: 0; + height: 0; +} +/* this makes ie6 and ie7 set height to 0 to fix z-index problem */ +html >/**/body .ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child { + height: 15px; + border-width: 1px; +} +html >/**/body .ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track:first-child { + height: 12px; +} +@media all and (min-width: 28em){ + .ui-field-contain .ui-rangeslider label.ui-slider { + float: left; + } + .ui-field-contain .ui-rangeslider input.ui-slider-input { + position: relative; + z-index: 1; + } + .ui-field-contain .ui-rangeslider input.ui-slider-input.ui-rangeslider-first, + .ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input.ui-rangeslider-first { + margin-right: 17px; + } + .ui-field-contain .ui-rangeslider .ui-rangeslider-sliders, + .ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders { + float: left; + width: 78%; + margin: 0 -68px; + } + .ui-field-contain .ui-rangeslider .ui-slider-track, + .ui-field-contain .ui-rangeslider.ui-mini .ui-slider-track { + right: 68px; + left: 68px; + } + .ui-field-contain.ui-hide-label .ui-rangeslider input.ui-slider-input.ui-rangeslider-first { + margin: 0; + } + .ui-field-contain.ui-hide-label .ui-rangeslider .ui-rangeslider-sliders, + .ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-rangeslider-sliders { + width: auto; + float: none; + margin: 0 68px; + } + .ui-field-contain.ui-hide-label .ui-rangeslider .ui-slider-track, + .ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-slider-track { + right: 0; + left: 0; + } +} +.ui-listview { margin: 0; } +ol.ui-listview, ol.ui-listview .ui-li-divider { counter-reset: listnumbering; } +.ui-content .ui-listview, .ui-panel-inner > .ui-listview { margin: -15px; } +.ui-collapsible-content > .ui-listview { margin: -10px -15px; } +.ui-content .ui-listview-inset, .ui-panel-inner .ui-listview-inset { margin: 1em 0; } +.ui-collapsible-content .ui-listview-inset { margin: .5em 0; } +.ui-listview, .ui-li { list-style: none; padding: 0; } +.ui-li, .ui-li.ui-field-contain { display: block; margin: 0; position: relative; overflow: visible; text-align: left; border-width: 0; border-top-width: 1px; } +.ui-li.ui-btn, .ui-li.ui-field-contain, .ui-li-divider, .ui-li-static { margin: 0; } +.ui-listview-inset .ui-li { border-right-width: 1px; border-left-width: 1px; } +.ui-li.ui-last-child, .ui-li.ui-field-contain.ui-last-child { border-bottom-width: 1px; } +.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) > .ui-li.ui-first-child { border-top-width: 0; } +.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset) > .ui-li.ui-last-child { border-bottom-width: 0; } +.ui-li .ui-btn-text a.ui-link-inherit { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } +.ui-li-static { background-image: none; } +.ui-li-divider { padding: .5em 15px; font-size: 14px; font-weight: bold; } +ol.ui-listview .ui-link-inherit:before, ol.ui-listview .ui-li-static:before, .ui-li-dec { font-size: .8em; display: inline-block; padding-right: .3em; font-weight: normal; counter-increment: listnumbering; content: counter(listnumbering) ". "; } +ol.ui-listview .ui-li-jsnumbering:before { content: "" !important; } /* to avoid chance of duplication */ +.ui-listview .ui-li > .ui-btn-text { + -webkit-border-radius: inherit; + border-radius: inherit; +} +.ui-listview > .ui-li.ui-first-child, +.ui-listview .ui-btn.ui-first-child > .ui-li > .ui-btn-text > .ui-link-inherit { + -webkit-border-top-right-radius: inherit; + border-top-right-radius: inherit; + -webkit-border-top-left-radius: inherit; + border-top-left-radius: inherit; +} +.ui-listview > .ui-li.ui-last-child, +.ui-listview .ui-btn.ui-last-child > .ui-li > .ui-btn-text > .ui-link-inherit, +.ui-collapsible-content > .ui-listview:not(.ui-listview-inset), +.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) .ui-li.ui-last-child { + -webkit-border-bottom-right-radius: inherit; + border-bottom-right-radius: inherit; + -webkit-border-bottom-left-radius: inherit; + border-bottom-left-radius: inherit; +} +.ui-listview > .ui-li.ui-first-child .ui-li-link-alt { + -webkit-border-top-right-radius: inherit; + border-top-right-radius: inherit; +} +.ui-listview > .ui-li.ui-last-child .ui-li-link-alt { + -webkit-border-bottom-right-radius: inherit; + border-bottom-right-radius: inherit; +} +.ui-listview > .ui-li.ui-first-child .ui-li-thumb:not(.ui-li-icon) { + -webkit-border-top-left-radius: inherit; + border-top-left-radius: inherit; +} +.ui-listview > .ui-li.ui-last-child .ui-li-thumb:not(.ui-li-icon) { + -webkit-border-bottom-left-radius: inherit; + border-bottom-left-radius: inherit; +} +.ui-li>.ui-btn-inner { display: block; position: relative; padding: 0; } +.ui-li .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li { padding: .7em 15px; display: block; } +.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-thumb { min-height: 59px; padding-left: 100px; } +.ui-li-has-icon .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-icon { min-height: 20px; padding-left: 40px; } +.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-count, .ui-li-divider.ui-li-has-count { padding-right: 45px; } +.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow { padding-right: 40px; } +.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow.ui-li-has-count { padding-right: 75px; } +.ui-li-heading { font-size: 16px; font-weight: bold; display: block; margin: .6em 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } +.ui-li-desc { font-size: 12px; font-weight: normal; display: block; margin: -.5em 0 .6em; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } +ol.ui-listview > .ui-li .ui-li-heading { display: inline-block; width: 100%; margin-left: -1.3em; text-indent: 1.3em; vertical-align: middle; } +ol.ui-listview > .ui-li .ui-li-desc:not(.ui-li-aside) { text-indent: 1.55em; } +.ui-li-thumb, .ui-listview .ui-li-icon { position: absolute; left: 1px; top: 0; max-height: 80px; max-width: 80px; } +.ui-listview .ui-li-icon { max-height: 16px; max-width: 16px; left: 10px; top: .9em; } +.ui-li-thumb, .ui-listview .ui-li-icon, .ui-li-content { float: left; margin-right: 10px; } +.ui-li-aside { float: right; width: 50%; text-align: right; margin: .3em 0; } +@media all and (min-width: 480px){ + .ui-li-aside { width: 45%; } +} +.ui-li-divider { cursor: default; } +.ui-li-has-alt .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt { padding-right: 53px; } +.ui-li-has-alt.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt.ui-li-has-count { padding-right: 88px; } +.ui-li-has-count .ui-li-count { position: absolute; font-size: 11px; font-weight: bold; padding: .2em .5em; top: 50%; margin-top: -.9em; right: 10px; } +.ui-li-has-count.ui-li-divider .ui-li-count, .ui-li-has-count .ui-link-inherit .ui-li-count { margin-top: -.95em; } +.ui-li-has-arrow.ui-li-has-count .ui-li-count { right: 40px; } +.ui-li-has-alt.ui-li-has-count .ui-li-count { right: 53px; } +.ui-li-link-alt { position: absolute; width: 40px; height: 100%; border-width: 0; border-left-width: 1px; top: 0; right: 0; margin: 0; padding: 0; z-index: 2; } +.ui-li-link-alt .ui-btn { overflow: hidden; position: absolute; right: 8px; top: 50%; margin: -13px 0 0 0; border-bottom-width: 1px; z-index: -1;} +.ui-li-link-alt .ui-btn-inner { padding: 0; height: 100%; position: absolute; width: 100%; top: 0; left: 0;} +.ui-li-link-alt .ui-btn .ui-icon { right: 50%; margin-right: -9px; } +.ui-li-link-alt .ui-btn-icon-notext .ui-btn-inner .ui-icon { position: absolute; top: 50%; margin-top: -9px; } +.ui-listview * .ui-btn-inner > .ui-btn > .ui-btn-inner { border-top: 0; } +.ui-listview-filter { border-width: 0; overflow: hidden; margin: -15px -15px 15px -15px; } +.ui-collapsible-content .ui-listview-filter { margin: -10px -15px 10px -15px; border-bottom: inherit; } +.ui-listview-filter-inset { margin: -15px -5px; background: transparent; } +.ui-collapsible-content .ui-listview-filter-inset { margin: -5px; border-bottom-width: 0; } +.ui-listview-filter .ui-input-search { margin: 5px; width: auto; display: block; } +.ui-li.ui-screen-hidden{ display:none; } +/* Odd iPad positioning issue. */ +@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) { + .ui-li .ui-btn-text { overflow: visible; } +} +label.ui-slider { + font-size: 16px; + line-height: 1.4; + font-weight: normal; + margin: 0; + display: block; +} +.ui-field-contain label.ui-slider { + margin-bottom: .4em; +} +div.ui-slider { + height: 30px; + margin: .5em 0; + zoom: 1; +} +div.ui-slider.ui-mini { + margin: .25em 0; +} +.ui-field-contain div.ui-slider, +.ui-field-contain div.ui-slider.ui-mini { + margin: 0; +} +div.ui-slider:before, div.ui-slider:after { + content: ""; + display: table; +} +div.ui-slider:after { + clear: both; +} +/* High level of specificity to override Textinput CSS. */ +input.ui-input-text.ui-slider-input { + display: block; + float: left; + margin: 0; + padding: 4px; + width: 40px; + height: 22px; + line-height: 22px; + font-size: 14px; + border-width: 0; + background-image: none; + font-weight: bold; + text-align: center; + vertical-align: text-bottom; + outline: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + -ms-box-sizing: content-box; + box-sizing: content-box; +} +.ui-slider-input::-webkit-outer-spin-button, +.ui-slider-input::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} +.ui-slider-track, +.ui-slider-switch { + position: relative; + overflow: visible; + height: 15px; + margin: 0 15px 0 68px; + top: 6px; +} +.ui-slider-track.ui-mini { + height: 12px; + top: 8px; +} +.ui-slider-bg { + border: none; + height: 100%; +} +/* High level of specificity to override button margins in grids */ +.ui-slider-track .ui-btn.ui-slider-handle, +.ui-slider-switch .ui-btn.ui-slider-handle { + position: absolute; + z-index: 1; + top: 50%; + width: 28px; + height: 28px; + margin: -15px 0 0 -15px; + outline: 0; +} +.ui-slider-track.ui-mini .ui-slider-handle { + height: 14px; + width: 14px; + margin: -8px 0 0 -7px; +} +.ui-slider-handle .ui-btn-inner { + padding: 0; + height: 100%; +} +.ui-slider-track.ui-mini .ui-slider-handle .ui-btn-inner { + height: 30px; + width: 30px; + padding: 0; + margin: -9px 0 0 -9px; + border-top: none; +} +select.ui-slider-switch { + display: none; +} +div.ui-slider-switch { + display: inline-block; + height: 32px; + width: 5.8em; + margin: .5em 0; + top: 0; +} +/* reset the clearfix */ +div.ui-slider-switch:before, div.ui-slider-switch:after { + display: none; + clear: none; +} +div.ui-slider-switch.ui-mini { + width: 5em; + height: 29px; + margin: .25em 0; + top: 0; +} +.ui-field-contain .ui-slider-switch, +.ui-field-contain .ui-slider-switch.ui-mini { + margin: 0; +} +.ui-slider-inneroffset { + margin: 0 16px; + position: relative; + z-index: 1; +} +.ui-slider-switch.ui-mini .ui-slider-inneroffset { + margin: 0 15px 0 14px; +} +.ui-slider-switch .ui-btn.ui-slider-handle { + margin: 1px 0 0 -15px; +} +.ui-slider-switch.ui-mini .ui-slider-handle { + width: 25px; + height: 25px; + margin: 1px 0 0 -13px; + padding: 0; +} +.ui-slider-handle-snapping { + -webkit-transition: left 70ms linear; + -moz-transition: left 70ms linear; +} +.ui-slider-switch.ui-mini .ui-slider-handle .ui-btn-inner { + height: 30px; + width: 30px; + padding: 0; + margin: 0; + border-top: none; +} +.ui-slider-switch .ui-slider-label { + position: absolute; + text-align: center; + width: 100%; + overflow: hidden; + font-size: 16px; + top: 0; + line-height: 2; + min-height: 100%; + border-width: 0; + white-space: nowrap; + cursor: pointer; +} +.ui-slider-switch.ui-mini .ui-slider-label { + font-size: 14px; +} +.ui-slider-switch .ui-slider-label-a { + z-index: 1; + left: 0; + text-indent: -1.5em; +} +.ui-slider-switch .ui-slider-label-b { + z-index: 0; + right: 0; + text-indent: 1.5em; +} +@media all and (min-width: 28em){ + .ui-field-contain label.ui-slider { + vertical-align: top; + display: inline-block; + width: 20%; + margin: 0 2% 0 0; + } + .ui-field-contain div.ui-slider { + display: inline-block; + width: 78%; + } + .ui-field-contain.ui-hide-label div.ui-slider { + display: block; + width: auto; + } + .ui-field-contain div.ui-slider-switch, + .ui-field-contain.ui-hide-label div.ui-slider-switch { + display: inline-block; + width: 5.8em; + } + .ui-field-contain div.ui-slider-switch.ui-mini { + width: 5em; + } +} +.ui-table { + border: 0; + border-collapse: collapse; + padding: 0; + width: 100%; +} +.ui-table th, +.ui-table td { + line-height: 1.5em; + text-align: left; + padding: .4em .5em; + vertical-align:top; +} +.ui-table th .ui-btn, +.ui-table td .ui-btn { + line-height: normal; +} +.ui-table th { + font-weight: bold; +} +.ui-table caption { + text-align:left; + margin-bottom:1.4em; + opacity: .5; +} +/* Add strokes between each row */ +.table-stroke thead th { + border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback */ + border-bottom: 1px solid rgba(0, 0, 0, .1); +} +.table-stroke tbody th, +.table-stroke tbody td { + border-bottom: 1px solid #e6e6e6; /* non-RGBA fallback */ + border-bottom: 1px solid rgba(0, 0, 0, .05); +} +/* Add alternating row stripes */ +.table-stripe tbody tr:nth-child(odd) td, +.table-stripe tbody tr:nth-child(odd) th { + background-color: #eeeeee; /* non-RGBA fallback */ + background-color: rgba(0,0,0,0.04); +} +/* Add stroke to the header and last item */ +.table-stripe thead th, +.table-stripe tbody tr:last-child { + border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback */ + border-bottom: 1px solid rgba(0, 0, 0, .1); +} +/* + Styles for the table columntoggle mode +*/ +.ui-table-columntoggle-btn { + float: right; + margin-bottom:.8em; +} +/* Remove top/bottom margins around the fieldcontain on check list */ +.ui-table-columntoggle-popup fieldset { + margin:0; +} +/* Hide all prioritized columns by default */ +@media only all { + th.ui-table-priority-6, + td.ui-table-priority-6, + th.ui-table-priority-5, + td.ui-table-priority-5, + th.ui-table-priority-4, + td.ui-table-priority-4, + th.ui-table-priority-3, + td.ui-table-priority-3, + th.ui-table-priority-2, + td.ui-table-priority-2, + th.ui-table-priority-1, + td.ui-table-priority-1 { + display: none; + } +} +/* Preset breakpoints if ".ui-responsive" class added to table */ +/* Show priority 1 at 320px (20em x 16px) */ +@media screen and (min-width: 20em) { + .ui-table-columntoggle.ui-responsive th.ui-table-priority-1, + .ui-table-columntoggle.ui-responsive td.ui-table-priority-1 { + display: table-cell; + } +} +/* Show priority 2 at 480px (30em x 16px) */ +@media screen and (min-width: 30em) { + .ui-table-columntoggle.ui-responsive th.ui-table-priority-2, + .ui-table-columntoggle.ui-responsive td.ui-table-priority-2 { + display: table-cell; + } +} +/* Show priority 3 at 640px (40em x 16px) */ +@media screen and (min-width: 40em) { + .ui-table-columntoggle.ui-responsive th.ui-table-priority-3, + .ui-table-columntoggle.ui-responsive td.ui-table-priority-3 { + display: table-cell; + } +} +/* Show priority 4 at 800px (50em x 16px) */ +@media screen and (min-width: 50em) { + .ui-table-columntoggle.ui-responsive th.ui-table-priority-4, + .ui-table-columntoggle.ui-responsive td.ui-table-priority-4 { + display: table-cell; + } +} +/* Show priority 5 at 960px (60em x 16px) */ +@media screen and (min-width: 60em) { + .ui-table-columntoggle.ui-responsive th.ui-table-priority-5, + .ui-table-columntoggle.ui-responsive td.ui-table-priority-5 { + display: table-cell; + } +} +/* Show priority 6 at 1,120px (70em x 16px) */ +@media screen and (min-width: 70em) { + .ui-table-columntoggle.ui-responsive th.ui-table-priority-6, + .ui-table-columntoggle.ui-responsive td.ui-table-priority-6 { + display: table-cell; + } +} +/* Unchecked manually: Always hide */ +.ui-table-columntoggle th.ui-table-cell-hidden, +.ui-table-columntoggle td.ui-table-cell-hidden, +.ui-table-columntoggle.ui-responsive th.ui-table-cell-hidden, +.ui-table-columntoggle.ui-responsive td.ui-table-cell-hidden { + display: none; +} +/* Checked manually: Always show */ +.ui-table-columntoggle th.ui-table-cell-visible, +.ui-table-columntoggle td.ui-table-cell-visible, +.ui-table-columntoggle.ui-responsive th.ui-table-cell-visible, +.ui-table-columntoggle.ui-responsive td.ui-table-cell-visible { + display: table-cell; +} +/* + Styles for the table columntoggle mode +*/ +.ui-table-reflow td .ui-table-cell-label, +.ui-table-reflow th .ui-table-cell-label { + display: none; +} +/* Mobile first styles: Begin with the stacked presentation at narrow widths */ +@media only all { + /* Hide the table headers */ + .ui-table-reflow thead td, + .ui-table-reflow thead th { + display: none; + } + /* Show the table cells as a block level element */ + .ui-table-reflow td, + .ui-table-reflow th { + text-align: left; + display: block; + } + /* Add a fair amount of top margin to visually separate each row when stacked */ + .ui-table-reflow tbody th { + margin-top: 3em; + } + /* Make the label elements a percentage width */ + .ui-table-reflow td .ui-table-cell-label, + .ui-table-reflow th .ui-table-cell-label { + padding: .4em; + min-width: 30%; + display: inline-block; + margin: -.4em 1em -.4em -.4em; + } + /* For grouped headers, have a different style to visually separate the levels by classing the first label in each col group */ + .ui-table-reflow th .ui-table-cell-label-top, + .ui-table-reflow td .ui-table-cell-label-top { + display: block; + padding: .4em 0; + margin: .4em 0; + text-transform: uppercase; + font-size: .9em; + font-weight: normal; + } +} +/* Breakpoint to show as a standard table at 560px (35em x 16px) or wider */ +@media ( min-width: 35em ) { + /* Fixes table rendering when switching between breakpoints in Safari <= 5. See https://github.com/jquery/jquery-mobile/issues/5380 */ + .ui-table-reflow.ui-responsive { + display: table-row-group; + } + /* Show the table header rows */ + .ui-table-reflow.ui-responsive td, + .ui-table-reflow.ui-responsive th, + .ui-table-reflow.ui-responsive tbody th, + .ui-table-reflow.ui-responsive tbody td, + .ui-table-reflow.ui-responsive thead td, + .ui-table-reflow.ui-responsive thead th { + display: table-cell; + margin: 0; + } + /* Hide the labels in each cell */ + .ui-table-reflow.ui-responsive td .ui-table-cell-label, + .ui-table-reflow.ui-responsive th .ui-table-cell-label { + display: none; + } +} +/* Hack to make IE9 and WP7.5 treat cells like block level elements, scoped to ui-responsive class */ +/* Applied in a max-width media query up to the table layout breakpoint so we don't need to negate this*/ +@media ( max-width: 35em ) { + .ui-table-reflow.ui-responsive td, + .ui-table-reflow.ui-responsive th { + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + clear: left; + } +} +/* panel */ +.ui-panel { + width: 17em; + min-height: 100%; + max-height: none; + border-width: 0; + position: absolute; + top: 0; + display: block; +} +.ui-panel-closed { + width: 0; + max-height: 100%; + overflow: hidden; + visibility: hidden; +} +.ui-panel-fixed { + position: fixed; + bottom: -1px; /* fixes gap on Chrome for Android */ + padding-bottom: 1px; +} +.ui-panel-display-overlay { + z-index: 1001; /* fixed toolbars have z-index 1000 */ +} +.ui-panel-display-reveal { + z-index: 0; +} +.ui-panel-display-push { + z-index: 999; +} +.ui-panel-inner { + padding: 15px; +} +/* content-wrap */ +.ui-panel-content-wrap { + position: relative; + left: 0; + min-height: inherit; + border: none; + z-index: 999; +} +.ui-panel-content-wrap-display-overlay, +.ui-panel-animate.ui-panel-content-wrap > .ui-header, /* ios4 fix */ +.ui-panel-content-wrap-closed { + position: static; +} +/* dismiss */ +.ui-panel-dismiss { + position: absolute; + top: 0; + left:0; + height: 100%; + width: 100%; + z-index: 1002; + display: none; +} +.ui-panel-dismiss-open { + display: block; +} +/* animate class is added to panel, wrapper and fixed toolbars */ +.ui-panel-animate { + -webkit-transition: -webkit-transform 350ms ease; + -moz-transition: -moz-transform 350ms ease; + transition: transform 350ms ease; +} +/* hardware acceleration for smoother transitions on WebKit browsers */ +.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal), +.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal) > div, +.ui-panel-animate.ui-panel-closed.ui-panel-display-reveal > div, +.ui-panel-animate.ui-panel-content-wrap, +.ui-panel-animate.ui-panel-content-fixed-toolbar { + -webkit-backface-visibility: hidden; + -webkit-transform: translate3d(0,0,0); +} +/* positioning: panel */ +/* panel left */ +.ui-panel-position-left { + left: -17em; +} +/* animated: panel left (for overlay and push) */ +.ui-panel-animate.ui-panel-position-left.ui-panel-display-overlay, +.ui-panel-animate.ui-panel-position-left.ui-panel-display-push { + left: 0; + -webkit-transform: translate3d(-17em,0,0); + -moz-transform: translate3d(-17em,0,0); + transform: translate3d(-17em,0,0); +} +/* panel left open */ +.ui-panel-position-left.ui-panel-display-reveal, /* negate "panel left" for reveal */ +.ui-panel-position-left.ui-panel-open { + left: 0; +} +/* animated: panel left open (for overlay and push) */ +.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-overlay, +.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-push { + -webkit-transform: translate3d(0,0,0); + transform: translate3d(0,0,0); + -moz-transform: none; +} +/* panel right */ +.ui-panel-position-right { + right: -17em; +} +/* animated: panel right (for overlay and push) */ +.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay, +.ui-panel-animate.ui-panel-position-right.ui-panel-display-push { + right: 0; + -webkit-transform: translate3d(17em,0,0); + -moz-transform: translate3d(17em,0,0); + transform: translate3d(17em,0,0); +} +/* panel right open */ +.ui-panel-position-right.ui-panel-display-reveal, /* negate "panel right" for reveal */ +.ui-panel-position-right.ui-panel-open { + right: 0; +} +/* animated: panel right open (for overlay and push) */ +.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-overlay, +.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-push { + -webkit-transform: translate3d(0,0,0); + transform: translate3d(0,0,0); + -moz-transform: none; +} +/* positioning: content wrap, fixed toolbars and dismiss */ +/* panel left open */ +.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open, +.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open, +.ui-panel-dismiss-position-left.ui-panel-dismiss-open { + left: 17em; + right: -17em; +} +/* animated: panel left open (for reveal and push) */ +.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal, +.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push, +.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal, +.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push { + left: 0; + right: 0; + -webkit-transform: translate3d(17em,0,0); + -moz-transform: translate3d(17em,0,0); + transform: translate3d(17em,0,0); +} +/* panel right open */ +.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open, +.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open, +.ui-panel-dismiss-position-right.ui-panel-dismiss-open { + left: -17em; + right: 17em; +} +/* animated: panel right open (for reveal and push) */ +.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal, +.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push, +.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal, +.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push { + left: 0; + right: 0; + -webkit-transform: translate3d(-17em,0,0); + -moz-transform: translate3d(-17em,0,0); + transform: translate3d(-17em,0,0); +} +/* negate "panel left/right open" for overlay */ +.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-overlay, +.ui-panel-content-wrap-open.ui-panel-content-wrap-display-overlay { + left: 0; +} +/* always disable overflow-x to prevent zoom issue on Android */ +.ui-page-active.ui-page-panel { + overflow-x: hidden; +} +/* shadows and borders */ +.ui-panel-display-reveal { + -webkit-box-shadow: inset -5px 0 5px rgba(0,0,0,.15); + -moz-box-shadow: inset -5px 0 5px rgba(0,0,0,.15); + box-shadow: inset -5px 0 5px rgba(0,0,0,.15); +} +.ui-panel-position-right.ui-panel-display-reveal { + -webkit-box-shadow: inset 5px 0 5px rgba(0,0,0,.15); + -moz-box-shadow: inset 5px 0 5px rgba(0,0,0,.15); + box-shadow: inset 5px 0 5px rgba(0,0,0,.15); +} +.ui-panel-display-overlay { + -webkit-box-shadow: 5px 0 5px rgba(0,0,0,.15); + -moz-box-shadow: 5px 0 5px rgba(0,0,0,.15); + box-shadow: 5px 0 5px rgba(0,0,0,.15); +} +.ui-panel-position-right.ui-panel-display-overlay { + -webkit-box-shadow: -5px 0 5px rgba(0,0,0,.15); + -moz-box-shadow: -5px 0 5px rgba(0,0,0,.15); + box-shadow: -5px 0 5px rgba(0,0,0,.15); +} +.ui-panel-display-push.ui-panel-open.ui-panel-position-left { + border-right-width: 1px; + margin-right: -1px; +} +.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push { + margin-left: 1px; +} +.ui-panel-display-push.ui-panel-open.ui-panel-position-right { + border-left-width: 1px; + margin-left: -1px; +} +.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push { + margin-right: 1px; +} +/* wrap on wide viewports once open */ +@media (min-width:55em){ + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-left, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-left, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-left, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-left { + margin-right: 17em; + } + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-right, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-right, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-right, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-right { + margin-left: 17em; + } + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push, + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal { + width: auto; + } + .ui-responsive-panel .ui-panel-dismiss-display-push { + display: none; + } +} diff --git a/bonus/cordova/3000cg/nanhucg/www/html/.DS_Store b/bonus/cordova/3000cg/nanhucg/www/html/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..2f303377e57a695ef37e67babe55927fbb868abc GIT binary patch literal 6148 zcmeHKOHLy(5PgO)N(eB~tXTGv6%sdSq5xt9NHc8M0ZE#V2y{gA8FqaP4#fdD0=LM# zDqF$%IP4HYF3En~Za=%~Rkz&+V4C;c4WI#_$|6`6vNllT6;MNm%mSHy z@zWSDV~iy-a@^pKybfzwDW>quU*WOL4F;^m$8GXD^svCOju2wLvbXPJ6+84V56z@8 zJ$o^&(4(BOXPl=`FV8=S&gcH5iZ}GIPmV-)Inz^#(P!828!a5+PsmpzvH6Te>~V&3 zoi(6`#Ajsr{^68taE;FBW8q@krN?J8^kD`~bwr}dGd$snV?71^WrQQ#I_Jvp zh)wdlK^CJ_k1NC6A1JF}_C?v-5L09Q=lNP=e|cjrf((hyXVf{m6D3e4O4hV1`a;q(6(E8a#0q5|JZ0aIxmwwjE{ z?X45B$zGeVoUn*VztW;oSh?+3FXXhj%A&?+iChp + + + + + + +我的关注 + + + + + + + + + +
+
+ +

我的关注

+
+
    +
  • +
  • +
+
+
+
+
    +
+
+
+ +
+
+ + + \ No newline at end of file diff --git a/bonus/cordova/3000cg/nanhucg/www/html/Geo.html b/bonus/cordova/3000cg/nanhucg/www/html/Geo.html new file mode 100755 index 0000000..3ac7daf --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/html/Geo.html @@ -0,0 +1,256 @@ + + + + + + + + + + + + + + + + 定位地图 + + +
+ + + diff --git a/bonus/cordova/3000cg/nanhucg/www/html/JDXQ.html b/bonus/cordova/3000cg/nanhucg/www/html/JDXQ.html new file mode 100755 index 0000000..d59c5c8 --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/html/JDXQ.html @@ -0,0 +1,155 @@ + + + + + + + + +监督记录详情 + + + + + + + +
+
+ +

监督记录详情

+ + +
+
+
    +
+
+
+ + + \ No newline at end of file diff --git a/bonus/cordova/3000cg/nanhucg/www/html/Login.html b/bonus/cordova/3000cg/nanhucg/www/html/Login.html new file mode 100755 index 0000000..6d1d116 --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/html/Login.html @@ -0,0 +1,238 @@ + + + + +登录验证 + + + + + + + + +
+
+

登录

+
+ +
+
+
+
    +
  • + + +
  • +
+
    +
  • + + +
  • +
+ + +
    +
  • + + +
  • +
+
+
+
+
+ + + \ No newline at end of file diff --git a/bonus/cordova/3000cg/nanhucg/www/html/MessageInfo.html b/bonus/cordova/3000cg/nanhucg/www/html/MessageInfo.html new file mode 100755 index 0000000..76ec262 --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/html/MessageInfo.html @@ -0,0 +1,134 @@ + + + + + + + + +总台消息详情 + + + + + + + +
+
+ +

总台消息详情

+
+
+
    +
+
+
+ + + \ No newline at end of file diff --git a/bonus/cordova/3000cg/nanhucg/www/html/Modifykey.html b/bonus/cordova/3000cg/nanhucg/www/html/Modifykey.html new file mode 100755 index 0000000..23720d3 --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/html/Modifykey.html @@ -0,0 +1,164 @@ + + + + + + + +修改密码 + + + + + + + + +
+
+ +

修改密码

+
+ +
+
+
+
    +
  • + + +
  • +
+
    +
  • + + +
  • +
+
    +
  • + + +
  • +
+
    +
  • + + +
  • +
+
+
+
+
+ + + \ No newline at end of file diff --git a/bonus/cordova/3000cg/nanhucg/www/html/Newsuper.html b/bonus/cordova/3000cg/nanhucg/www/html/Newsuper.html new file mode 100755 index 0000000..36c050c --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/html/Newsuper.html @@ -0,0 +1,347 @@ + + + + +现场添加 + + + + + + + + +
+
+ +

上报监督受理记录

+ +
+ +
+
+
+
    +
  • + + +
  • +
+
    +
  • + + +
  • +
+
    +
  • + + +
    +
  • +
+
    +
  • + + +
  • +
+ +
    +
  • + + +
  • +
+
+
+ + +
+
+ + + + \ No newline at end of file diff --git a/bonus/cordova/3000cg/nanhucg/www/html/SBXQ.html b/bonus/cordova/3000cg/nanhucg/www/html/SBXQ.html new file mode 100755 index 0000000..8399efe --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/html/SBXQ.html @@ -0,0 +1,156 @@ + + + + + + + + +巡检记录详情 + + + + + + + +
+
+ +

巡检记录详情

+ + +
+
+
    +
+
+
+ + + \ No newline at end of file diff --git a/bonus/cordova/3000cg/nanhucg/www/html/Set_up.html b/bonus/cordova/3000cg/nanhucg/www/html/Set_up.html new file mode 100755 index 0000000..254da4c --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/html/Set_up.html @@ -0,0 +1,47 @@ + + + + +设置 + + + + + + + + +
+
+

登录

+
+ +
+
+
+
+ + + \ No newline at end of file diff --git a/bonus/cordova/3000cg/nanhucg/www/html/baiduMap.html b/bonus/cordova/3000cg/nanhucg/www/html/baiduMap.html new file mode 100755 index 0000000..28ea833 --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/html/baiduMap.html @@ -0,0 +1,85 @@ + + + + + + + + + GPS转百度 + + +
+ + + \ No newline at end of file diff --git a/bonus/cordova/3000cg/nanhucg/www/html/case.html b/bonus/cordova/3000cg/nanhucg/www/html/case.html new file mode 100755 index 0000000..39effaa --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/html/case.html @@ -0,0 +1,356 @@ + + + + + + + +我的任务 + + + + + + + + + +
+
+ +

我的任务

+
+
    +
  • +
  • +
+
+
+
+
    +
+
+
+ + +
+
+ + + \ No newline at end of file diff --git a/bonus/cordova/3000cg/nanhucg/www/html/contact.html b/bonus/cordova/3000cg/nanhucg/www/html/contact.html new file mode 100755 index 0000000..e34b08e --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/html/contact.html @@ -0,0 +1,91 @@ + + + + +电话呼叫 + + + + + + +
+
+ +

电话呼叫

+
+
+
    +
+
+
+ + + \ No newline at end of file diff --git a/bonus/cordova/3000cg/nanhucg/www/html/home_page.html b/bonus/cordova/3000cg/nanhucg/www/html/home_page.html new file mode 100755 index 0000000..7a36bd3 --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/html/home_page.html @@ -0,0 +1,172 @@ + + + + + + + + +南湖新区智慧城管系统 + + + + + + + + +
+
+

首页

+
+
+
    +
  • + + +

    城市巡检

    +
    +
  • +
  • + + +

    监督受理

    +
    +
  • +
  • + + +

    我的任务

    +
    +
  • +
  • + + +

    我的关注

    +
    +
  • +
  • + + +

    历史记录

    +
    +
  • +
  • + + +

    电话呼叫

    +
    +
  • +
  • + + +

    密码设置

    +
    +
  • +
  • + + +

    总台消息

    +
    +
  • +
+
+
+

上海物鼎传感技术有限公司

+ +
+
+ + + diff --git a/bonus/cordova/3000cg/nanhucg/www/html/inspection.html b/bonus/cordova/3000cg/nanhucg/www/html/inspection.html new file mode 100755 index 0000000..d707903 --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/html/inspection.html @@ -0,0 +1,298 @@ + + + + + + + +城市巡检 + + + + + + + + + +
+
+ +

城市巡检

+ +
+
    +
  • +
  • +
  • +
+
+
+
+
    +
+
+
+ +
+
+ + + \ No newline at end of file diff --git a/bonus/cordova/3000cg/nanhucg/www/html/newAdd.html b/bonus/cordova/3000cg/nanhucg/www/html/newAdd.html new file mode 100755 index 0000000..cd360b3 --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/html/newAdd.html @@ -0,0 +1,352 @@ + + + + +现场添加 + + + + + + + + +
+
+ +

上报城市巡检情况

+ +
+
+
+
+
    +
  • + + +
  • +
+
    +
  • + + +
  • +
+
    +
  • + + +
    +
  • +
+
    +
  • + + +
  • +
+ +
    +
  • + + +
  • +
+
+
+ + +
+
+ + + + \ No newline at end of file diff --git a/bonus/cordova/3000cg/nanhucg/www/html/push.html b/bonus/cordova/3000cg/nanhucg/www/html/push.html new file mode 100755 index 0000000..34f1119 --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/html/push.html @@ -0,0 +1,108 @@ + + + + + + + +总台消息记录 + + + + + + + +
+
+ +

总台消息记录

+
+
+
    +
+
+
+ + + \ No newline at end of file diff --git a/bonus/cordova/3000cg/nanhucg/www/html/record.html b/bonus/cordova/3000cg/nanhucg/www/html/record.html new file mode 100755 index 0000000..681eedd --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/html/record.html @@ -0,0 +1,229 @@ + + + + + + + +历史记录 + + + + + + + + + +
+
+ +

历史记录

+
+
    +
  • +
  • +
+
+
+
+
    +
+
+
+ + + \ No newline at end of file diff --git a/bonus/cordova/3000cg/nanhucg/www/html/supervision.html b/bonus/cordova/3000cg/nanhucg/www/html/supervision.html new file mode 100755 index 0000000..e37b161 --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/html/supervision.html @@ -0,0 +1,299 @@ + + + + + + + +监督受理 + + + + + + + + + +
+
+ +

监督受理

+ +
+
    +
  • +
  • +
  • +
+
+
+
+
    +
+
+
+ +
+
+ + + \ No newline at end of file diff --git a/bonus/cordova/3000cg/nanhucg/www/images/Focus_on.png b/bonus/cordova/3000cg/nanhucg/www/images/Focus_on.png new file mode 100755 index 0000000000000000000000000000000000000000..f72a52a4622f6741ad73fa6e77d69836731d4b0f GIT binary patch literal 5180 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 literal 0 HcmV?d00001 diff --git a/bonus/cordova/3000cg/nanhucg/www/images/bg.png b/bonus/cordova/3000cg/nanhucg/www/images/bg.png new file mode 100755 index 0000000000000000000000000000000000000000..ce83863949f134c9e94db79f8ccf95e7b187c174 GIT binary patch literal 7429 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 literal 0 HcmV?d00001 diff --git a/bonus/cordova/3000cg/nanhucg/www/images/case.png b/bonus/cordova/3000cg/nanhucg/www/images/case.png new file mode 100755 index 0000000000000000000000000000000000000000..a3a2511ec5f3acc8959402c2ac0b1f66dbe6e664 GIT binary patch literal 3463 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 literal 0 HcmV?d00001 diff --git a/bonus/cordova/3000cg/nanhucg/www/images/help.png b/bonus/cordova/3000cg/nanhucg/www/images/help.png new file mode 100755 index 0000000000000000000000000000000000000000..ada3d1920cbccc38a71c88888d56368f9f605e12 GIT binary patch literal 5457 zcmaJ_by!quza^zaq@)ps?wJ7u28JBEyJLW%X9k#|!=M`pl@O7T4nYu*kOrj%0qG7& z0RaWPc)sKL?jQHu{XBcW@vOCe@vi6nW5?*}sFIU1lH%atkgKb~46aA{-!Jiv>u;&6 z*ZlRsfK@ib8ls)BesFIDj)EiF9>J!LggYY)5OBu;uYQCK4h}xItC1PjOj`@$fJO?# ze`AFGk)GFV92^-re^0oBI|9pQk8pNHK>_>k+5l{>j!=N9xHeGRQwibXsut*tFbvc& zatL&Hka7gb$+F4#L#_po2rQhVSAzjPtj^WWPd0Jgs%Sa&GkKS`Ns>#-@J zy%B8U!s0>>Kro0+LP{7UE-oPf7GwhhL1H36kO)Xr2qXm&6N3POY=1w1>uBDNP7ni_ z%HOfBS5SZp7V8NS5%Kf$6ZR7oMteJpfTX0PM1WusFj(jsA%qD)Vd4HlC=ACR1sDS3 z;O**(bw#7tek;Q5(LPux;5yU)lz{a7M;3+oyG_>(6Y+<8ihzWHzf1Z9)Ykt0p-ALE zXbjc>@!x#^PhpHvfG0x40D(dKcspDloD;|IP@WJaZv-5R_BKMJJ^pl2&jpP|V_eXl zY)VRhb&ZYJ)D`83_QUY~#nIM=sG~4gILZN`4ub-&RfJt#9U(wTC6K6?5?D$Cs0;!r ziz$i$6_u1>U~!m~qL_q~=pQZ&?cjq%ps;_qj{oI~{ww#l9gv>akzojLS6_sqiZ>d` z_E*^u*MH9i_^*0@a~=OZ7tp_QMXr+(`F*(m>#+Z9T|4Oa^dIY9Fa9w<0(I?p?`vyM zMTPj_;83=!!xW7Czsy=9n~VbZ48cW0`C%!}{Qy>WFHfpGqC z17f^~$-D|RXVhO53-u_Cmx%JxE{F-m-R>(FYY^g*5N;DJEAmN_vXe-bq|!*oJeRZy zl5=u$UZ2O@+COhN&A~YPK6mP6cTAa{%V@;x1uPu34*zT(mU6O{6H3-tJbBgi(UhJO ze;WieA^hA_tk#2aIq{UC{Fbj+6BhHH=BXW)A>`}aQEq>A@~gW<4UE9-7^Q$xeRz^m zpQ&o;W`%Em4y!fHbT7kc3dBuGC@Sw2WsibCSc+;gG zCiSXMGi$zmGxqYU{a9c8%@1mtv(=ree!KWto;`b&j5GWcBPlbNVEuWDg2tCW)S1JW9c1(pv>I%ZyvuN`6GB4O zLjz}suQ;2gx(@5YwfPpA*0;af<^O6j()mK7M@Hz>`@ov|I4B!lI^=PGOTrh%O+53DUVrr?hnn}j>A;xhn95o zsCmj{e8q6~BYxj27SeXpr-V5zya!X7B&~iqFR4}ND{5YTws(Co$cjoJzWH60JBrcW ztr%f3YQ4hT7OEMYBpB`p^W04*!Q06;&>iuUWR;ugoYe7qJyqi3Rv8Q|m(=sG{nB|A ztu`Ev$00lLu>b7tbo=3XlJXRkrKQ5F$BkXqry#QB6Lj{}jEK%cJieD_z|IU~tgF+*N2M~wN41`9jS?4<)iaf|RkMdUgG!&D>sM~O)hqv!0=DDe?Bdcyzk3E3PE#l+## zIZTy4Qq1`zzJNxFPf)-eukDjyH}#Jp2NS!T7;Z=;7DjyqA!;< zh-@#iKA!cOGP;PVfFP`^ZzKxUFM1J)ba#;kwC3H&sGb{%AVuuSW$jJfmdAE)sF-#F zm?AZsUXTW}6U41@pI7BoD|H2?NUSqzsA0P`ZtwJ*L-eXlL6i3 zToPo^=k)kTPgVW9vkeT)y^I_RvKd2_^OO(~d%iXv^*E469)dv^1u`#EQkD~Mg*ZgPH z%hdul^!!_x6G+hT1*;;hokc?7$ga+IG=|W~>HZB3f4$Un`l$(!r8-U0*@UIN(PVo{ z+LOx*jaYrRn~cV|I+Q&DpEZ~~sfRu|_hg;!xYKvmy63^g&C~Tzvq2?Uw>AgUF&15H z2o26{|8QwkX=PB7iAbRih`pSit1|**W0re;Nr~D#tERKML#w15n}xT`LjCKWwb# zssIa~I_b}aUt7d}q1E+ECv%+Low`)I#aaquW0-aiS5bk|_vxNfpzMs(W9J?s2vvDL z>@nVc^Y;qWJm-6+Dw5#C@BE?PJ%b1LWxlNfa$1eLdBx31tq>;jyRqw+3b!5rbctyB z04umU;(C+HiZy=RxI2zwY*Yy?4@a(Y?j{|G67f%7>`^=4IUGqPapSNQ4Ae~6Hs|dW z@R7y&FyNm=L>xzvwTg@GcCls{PbjuZOc*WI)iY*$-;9ytSSg$AO1KXVBD{ZQMmFb3 zR?2%*`4$%OW}in|iswQ1&7V2Ixy6&i2LOdq0uu*^W3dww9}Nsw@*dM#!_h0qy*mw@ zI+v$_)?+hj0S_{jj*-YZF+>twnHgIv$U?HpI!aA5Y_P-S!fv#>;Gp~p6I9C>aXt=v zu;q%7{1lLtd>H>>PGpW*pJl;}L+0Gp@#3we3!x=QM_aG7Kj?C_M)r>=eUvTx`$l1dI@+Nd&QTi-K$TaRj!a@(0b zTNIkXum+ZOm9R<1&j+=}sDtm?G^zK73N%FkYXQ^(4~63U_{LhUj05d z8u{|qz&Rp#i<3cDO3sFBh0h*VpOwb(&f1)gtN;`EGhSybAEf@Xq-=G_(|bKN9nq zY-$tdqSa3RJoR2U;800L{vPGYT0dXp^CQs9pj=bc!Uxp_1j1({3DV;d`_FM1(@!wJ zf<&s8nOZ#JN%uWL*{rf)k_h9CY2vt7EWn~_?7&PBy9txZCQ;;twf2&-@Eyg z(X`akY`;Sh>vL6WHr+UhNOfmbbN%5uZ%Btk^MV`>b^}Rzr$3G_udfYloJ^ac2%2t* zR0{CEF2hxO3s`-YYhZ^DeK6{n+Erbdk#Rf7H);y3%oQVFHRHo$Moj)lnlm~pg$tHz zJp0(?a;NO4LZMso#ktR+4PFzmz6Od;GPT23)0luljKb?2EZar*DI1fMtGQ z%Rwvs(GmNy8bf9Lz$TYKbIx4fhf66weIuInqt_PI>|Sn$_j6BZ9*4Z;eI1ZQVS@E( zT;kq&ty4nXk#vXH^fu)sUKB|{OogS=j%Bf3tXX!ZUC|1F?<++R-5ZU@B9+iX10tX4 z!M97h{nC2lD-m(l0BLq(&8_tMytJ6S&W{EUoU?kaE(fEyp&v^C6_Stgn2s@EcBS(n3`I=;&^=} z2GI0FPiE!2j>F0pPNT{q4_c$6;=)I zMIT%#8OM(+eel_%?~dh$J?T=Jl&XFee^ZO=dKH@cvRGbXgc`Qk7|zs_%%i? zz-3)iO@afr!eo1vQ#jtK=ldq1Gl)VrJ~N_bw>9lvNYbx7?9K9D%?K~{F7EC7;zn$` zLTwXcRW(jhG|nfzXirtZ)F}Auc|rp?hfLJ)2+qzy%T=tUikzBpkJxSF62VQo6%@%r z4jS=4nS!vc_{m8nI$-!LtTX&X4ICXm%#93KECF_uLl@gce89bx%aA>saz<&jKofbv zIW0$l{oOY-VP*TCHuRbKEkJ?7s+IK?r>K>cpZMU=%P?wkw~&2^$wM{jinHxT&q=+z z1Z(p3X5jg0g2CtA6%db0=3?^5M;~j)&|4CKdm<4BGrGid^bt{4Bnh+zIy)~&yedR( zqSpE86AZPRVrS_J4WbN61ge_nE|P27yr^1@oU+(4Y8tCHh=_07$+Sz!RO~;cS`T-HFuM( zR5=K)Z$j#~U(sNbE?S85B0#jmw6!Jvm4V97_znMqeUZh{4UR!VE!T;Sv+QwLYl{$b zkLf_h8vW9frkj__eCft%T4Gb0`cOyR5%PWeWUltndyMyXly79ATH7h1$^oh>{x2ts zjSozRNv$ke<6r!gCy(+oIZ@c$w>9frke%qUl~c7dXPFH9IQB47VOw{8;^ejb);@k( z9n5@(DSpz6KeME!*B0K8;;AJng>%rAYrq4oqaE8HM!X_{u$4A7Thzt!3`IzWw8r&o zSl;(4p&r9`kHqbXOVQec6=6^D8f}#gDk*&5IK74ax*gvoDIxI) z?VH;1l`uju-g&+xF6H~i==}1FSsF>e5ww}oK9Hnr<)jW|<)WLL;N{lJKYp8}c8kv% zZ^dvCuo0KOuN1T=s(5-N(=mgmdK$iv$w+QP`bwbYEjr~g0NRn~^{6_N`6$p8B>z*u zEMq{bsdwhN$@JVO!#P`Ku+b(%L>>-QU)Tqqo)xT`7C+oHmJ(6JR3OQ3v>^eoiAk}f+pb?YHDPMlsc;l)(75FLIQT&Gj-n72 zk1%tU3JSv_<3dB=HF-hD)TF#dQ8vZJW2rSbZDiC#Hrb;*g+=onGX=0picNPrToIU-*7d`S-Ebc3NYNt6Z&_H47f;TqQhhmA+Lb=7v~Sew5C~{$cZ%hwT(y0PK9u55 zkTdh>AFiivsw z!Do%xM+5?PKN|b9X_e%j-$@KNc8k_3IqJ6Hsy%!oDXv(ES_=`~dAw^lYC6N>mD$ny z>ufhrTEQ#cnU`^|B#F@0e77%&tK@>Ol!~Zn^`;HKHbBll`DKHum06?aaT@avEC0aU zvOD=zpg@2qvs6Kn7Ni)XKM);bBshFa7V>=bx-c+@)DFw^T%<ToEhpa&L56N;;AA~&PW~|FSskx6bVNJVg`{=JUl`{cXMl;wShjw1?43H z|AUbT@Iqg+@$jI^0cg03ClbfwjC6JPRs`<7?Evz)BNTyFG6rA+v^vtwT{{SiGz&5` zcM0-zQ9uBdm3W{5kZS=iBo59K;C0X22NIwN{7V;dJ^!-}0`mL?!FehI|CN-rfiaId z3X9~Ck&qF00ZU2p$SFuj%E-vcNr~}DfhDCuU`deVEpbT&h_o~W4CeXw1-y=iMcjp$ z!ZiOK>w2XKbi?7$5D>`U-(SN2mIMmx3X)V%Pym6YKvGiT*9dW+KyMs8K-}Ah?{5Vd z(#Hksj>fs8ym|g8!ktmRI7Q%frvECz3;iEiZ=Zj+>AGQ{05}>XDFOad(%(P>ga04u z<@F!556%?%-+cd1VIT8AG!kTr^g;PzU9J!AF5jO}Xoxx%3CE$Z<|x#?zq@GchQgtI z+)!v9b@jix#v^3q?u|hC`w0KVF))DWc>Cbs-Y!TTm?H36MZ(=30a25ek_5}c)D&bj zH6)JtorvI_-_2NI~M|xj7 z9(!$V4TTFmJUn_k9hjQ(-Fie|hGbK#3rAD}HIb=PraOe! z;P$S5L8hPE13&FaoLfOIFXr=8UUjL-DfKw2tVZfA6>aip17k5+Qo^QpOVpo@nh?9& zpT7s4J@KjK=a^klob^bl-LU@Hun@Yj*nV|>>C+1U94+B*HbqFk=x${9?Ici-89Js* zlSvH9E6k59UtI{W)1x!*SbCmA+T&5=!Fq*_H(>m()8Uj1zwUrCYGa^T4e=y+hN{8Tf+wJU)kiEbH4)8?w_3 zFWSlXE*rk#L&mb-S42Z)&to+fx7*bvypmj7rkoT2rlgcR5fxpZx6HrjfvAVkc!3g9 zD@)%UC>P^JIU$F;m-%x_-E@!p$30iaJS@QFs{m$1WI2)M$xL&oKS>z(GaL)sn4+C* z9t>13uez<0IzRh#xyN)Vm?Emwq^*0Uxx|I)l)RLwPa>(}$u|AE{$NU8-%rK&>i1Y8 z*1TWzugnQkhCw|JiILf&-`71t(J@36a}@!;1peYQ@DACpMF(;WKU)nk{%yZr1j?of zI}DA*y7TQJX1$Kt=Nc!8+mTb6S-hrCTpV6+(oY3F$Gw(Z|AKOEg!dluBsN+5brG(O zK^%VRn9bHu+ssg;xhT!1XpO!yXM%)c&5xC zlw0<}-a;?+L-B1xr+%%)JGeLG97(SV4UPgHv$w}XZ<0Re1gMPE^rQEGX-Q7#(G>Z0 zC!)jEzqJL-vfBl}-y3R&mcqWp2+UzPE4|(=d|h9=!4PIN^^BFuXS`*Zo*^O1R$x?5iy*tQD~s}Pf)??){v}ea51&G*JU>0}v*3^`M#3q9 z%R(k*v@R}u^0-a#$djJ7hg|M7QMo`=v3`yge}?^c9N z7>B}FAOwe8=$DL252Y8rTBCfIA8T}$$9&=eBoux=FGw_&Pc|2cDbxFm-hT0VnZ*bi z6BfG9n{24h!<@#O$MK{l)Lj`VrU8BO-dGOf^p-hadVy5u3}mZ2&O5ziuRmo4Rt*fJ zG+Mn=&EWPz?;TM5D@o$;P--bkEbjSw=F#1X_-_?8@skojbUeR6wb{=V?hyPWme(r_ zT#K5YD$U4D$m@KvS#Pe|#{p5dqe)Yr;FsjaC;~tQ{vIrp_%ZS9{_-`iCx4#2k>B$4 z%qY#KVxXs?rds)RdVX+Ll!*Dnqd$pcT>fgp4d^rwhseH`>7?w{&aa$lKW48BZcnUT zJRM^Nu*JdM%;=bo#e2D|Tk$&0dBNUqM)tb?o%(!T`ApfIK`uiIGfz1Jov%yoFMWhPn@e$(SI&LSUyo4Kg}_nf}T68 zjB}XZ+ur@c*U>QU?V&fpk!TRgLPVfJ&u?U%vSjqE*X~rB=_FW!>T_A>*_=~kS(8h%KE2^%7`)a2s!Mt1To-V;Wo0GIrs#K-v8a7@xgsLgl@DXhkv9~GtAeeVwJOg){ieBf zN(HWbX7#|u+FsMm=*n`iRO?I-J)^r~HVum&ke@u?3_v7oWXFW(Zc(&;l#8Vn7Zh<3 zaehf;S?kgNT@hvc$P?Rib7G#MZLx`*%xmjBbtlYDB3mt zy7ViIQzu^+LsryugxWz@T0JYZBthRLQBa?Fb_{uO43CF>bYFRy(qR@JSY+J(Q*A|bft-DSK=pTMQt3%CV4{~&4DcU!e;B-gD=)%kEu z&qj?66j^-lvBzhB6^knN6v{kZQsKl}QrLOJh@Ek44=|pTjC1Xsh!WwK>kpS&hJv7% z^wz1PEpa9*X{=5Txg;ZTm#)*Af~E^JKb4I6VX?lFv}S&~S)>Z~!4I`x528f{@gG+S zyBcw>nGZ0xp@UK#bvd%1d!({<5|XYdGUdYHSI5zs@u))o?C;({Bb;)~mPUAFz|7DN96()(}EpP;P z!pAy^URCnX>%-avmVsh93X;l6@MvAtvd(XbVK*cLnR$2V?D@zXw2#O5JW3?0N~)CQ zi$ehHY{fw!?FGTZ-}+|;eN}6Cvu6Z=PCcL+;3bKy9OKd20b74Kho+p)$FC$3qpTk+ z2TeGz=@J#%o9zd{Uh#hAPH2`on8=2%5SDPy`cY$gqSP8jdrT|xwl0tPPBy6tlJ-xw}%TZ-;~{Kg3-5P108hQVzA4kZPDP)Mob*kVrl{1)4L zW%tMWceYr2n6?Hma70tz_4_&^#%mbhw!9?d+)#4FHd6O(Nj^{6>Z8BPLWhLt#-BY2B_Un7&3}56XiNbUKQVO3 zIY?E;oX%#^$eM|5?vWkfmud)LlPX;`hTO-i4U)Xv@{w~oj)Y)4-#Qh`ThfP(nI&3O z5r?#l^!gsdcerVme@3SkQqPKur~_&$>gr_OOC$^9bPUasg)pH^V~XdV(8D7ie!qCc zw*u+?5E^s~mwY&J^_r}8B;i1Sj6-Tf1fBHvbMng&ABsKB`;>Qv*&AzZqK+z+T3fEX z*5aF=d!ph>wU!dbeTRFbR!(G(spXs&)#NtyuirKrQFICKaeJEq1RVi87%Cc?j00Yg zgu@1zWxSl*_c;m+5^~H5T7Q-sEtm@bASCS8{(k>Pm`)$+?d9F49;Yi$+5@?jF3ufc zcg}-wkL07XzVWegvUXOTOk01L5IJLO_8Q_7iz43DZFKCS)Zoj}(gY|3F^>H{6UO=Z zIfp=_Zd59duiW+ORb#?-5Vcm)H_w<`M<*$%B;>kOponBp%F(qMqirV)ax3y0zg^RQ zvp%ZDt+aK=9r)jFPrBnh7fb3G!hMyI>U`%7!?p;d4mWalYFaMyO_HwCo>2@}GHoi) zyf5b-{ai=OhQU*#r)4A`d@ovkl?e$W>C>aQUS znN|k1UT)q9;=`mbfnwXdQ&95U<7HGLCqM4K2|_6`@&sF_->c#CjI`7W-5tk4?Fo-*sDZPiOT? z<{M`}M!s)x7>v{}QdUp_JSGvV>&ak!c#&?#sjFEH&a4I21+$~t=On#awa=*^n#_Jk z45fbZ&S_P4vxJ{W&%AMoE@4)#)T02Z?F(&qnquS{E_zc9$ng7DG`+q};xL{g8uFs`yTpO1Bs#IB>?#fVfRjrZ-Vr&bb++vv@NzL;|MkDQ# zWOYM>zrAo8vEqgJG4}5e!~(^I_zQ~6sMT2CWjB}?sGD{dd#A^1fq7|2lsH2*9zf;_ zstNCjjFY`GV%F_M@Y0*vHFY`1K?~y1CV*0dsu*%aqe!yAYwiAclkDX+GzyY;EWMPXHryIDaF7lpFdjd}7iO$D1*7)21Yb*95&vQV2-W+*lB$(ApJ1#$e*js(Aki%2uPH%8|9U7LYbFDB~t5v zhn(IkdiKjw>Q2-Oqi*JD!A2&zzzESS<9Ir)**My0%O|LyX(T#8Dt=~H?MYc^} zZo(P6F=TJNxG7BohL5BG70p$d@lJRhPP^@;T-xxy4vtIX+J7!g` z*4JRD*7_ZYy*UN*p^m0V@mXNxE-TZkavXAC_z@>15{{sm)$E)AFUT3G(t6QQLh_@?0 zClRiyWoLVycap;nv6oSrW;56aV(_eo>&^A5=Yi@mLCUlDD8xR1L(LT}*<7w}q)E!S z9^78raX7Y^??3r8FvHKgepx%xJ5$PJa>9hw1U;D`aLtNphecl)c$z9=Dn4BlAb&`W z1DMuV-8)#IpdxpnM!5=Q)`1`A-(D>=^nTD!R4hyuxvDR-2rLfnY1^Kv@E476`PHb! zHY2c=K6ukokULunhv2BnX4x8=CUxd*{qh7e^1x&NOP&Vw*D<1Sw^pa(ySEsqST literal 0 HcmV?d00001 diff --git a/bonus/cordova/3000cg/nanhucg/www/images/phone.png b/bonus/cordova/3000cg/nanhucg/www/images/phone.png new file mode 100755 index 0000000000000000000000000000000000000000..d9d143af3e911e8f444fd761a4713bd60156177b GIT binary patch literal 4141 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 nG$Yh|28XgTSDcbljr{ht!Y2= literal 0 HcmV?d00001 diff --git a/bonus/cordova/3000cg/nanhucg/www/images/set_up.png b/bonus/cordova/3000cg/nanhucg/www/images/set_up.png new file mode 100755 index 0000000000000000000000000000000000000000..8f22e3c902eab2b605aeac9fa9cf2fe7da45744b GIT binary patch literal 5775 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

TzOgRoq_r4-#A8kBx1=cISuNq&Sll?3FWr(byWV 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 M%RbRkd4T``J42ZkPXGV_ literal 0 HcmV?d00001 diff --git a/bonus/cordova/3000cg/nanhucg/www/index.html b/bonus/cordova/3000cg/nanhucg/www/index.html new file mode 100755 index 0000000..78e531e --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/index.html @@ -0,0 +1,8 @@ + + + +PhoneGap + + + + \ No newline at end of file diff --git a/bonus/cordova/3000cg/nanhucg/www/js/.DS_Store b/bonus/cordova/3000cg/nanhucg/www/js/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a57c354e1e68138c9c91ce36ddc9fe423c59e2b0 GIT binary patch literal 6148 zcmeHKJx>Bb5Pgdj5DG|ajMbGknxKW27lI}x7DoI53aF6)ry_;j{S1DTKfr&3Z+151 z*hB4%F*C{R+uNHrxAX2}ZvnW@eAotB0BUr>N}bIHlk?&wtAr6b>3ohkE|6h>1B^=1 zHt-h}kbBoa2e){{5XJj9J0E9*{y6J1LLQGZ`rgtTdq5NSzIDHiS4c;_BNldn0*r16V7V7G0R7krM{L$p4oWTQuCrv^KQhL zucSSoDV^g`hWWM z{(qfhN2Y)&@UIkb)o!obVM$?aEfptgZ9>1Hi%DFrxT3J*mtw}sQoKX=#_>ct#57>8 R$Pt?T2zVK+F$I2AflskfgpU9K literal 0 HcmV?d00001 diff --git a/bonus/cordova/3000cg/nanhucg/www/js/BaiduLoc.js b/bonus/cordova/3000cg/nanhucg/www/js/BaiduLoc.js new file mode 100755 index 0000000..fbc71cc --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/js/BaiduLoc.js @@ -0,0 +1,43 @@ +cordova.define("cordova/plugins/PGBdLocation", + function(require, exports, module) { + var exec = require("cordova/exec"); + var PGBdLocation = function() {}; + + PGBdLocation.prototype.getlocation = function(successCallback, errorCallback) { + if (errorCallback == null) { errorCallback = function() {}} + if (typeof errorCallback != "function") { + console.log("PGBdLocation failure: failure parameter not a function"); + return + } + if (typeof successCallback != "function") { + console.log("PGBdLocation failure: success callback parameter must be a function"); + return + } + + exec(successCallback, errorCallback, 'PGBdLocation', 'getlocation', []); + }; + + PGBdLocation.prototype.stoploc = function(successCallback, errorCallback) { + if (errorCallback == null) { errorCallback = function() {}} + if (typeof errorCallback != "function") { + console.log("PGBdLocation failure: failure parameter not a function"); + return + } + if (typeof successCallback != "function") { + console.log("PGBdLocation failure: success callback parameter must be a function"); + return + } + exec(successCallback, errorCallback, 'PGBdLocation', 'stoploc', []); + }; + + var PGBdLocation = new PGBdLocation(); + module.exports = PGBdLocation; + +}); + +if(!window.plugins) { + window.plugins = {}; +} +if (!window.plugins.PGBdLocation) { + window.plugins.PGBdLocation = cordova.require("cordova/plugins/PGBdLocation"); +} diff --git a/bonus/cordova/3000cg/nanhucg/www/js/Toast-Plugin.js b/bonus/cordova/3000cg/nanhucg/www/js/Toast-Plugin.js new file mode 100755 index 0000000..1a3e7d0 --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/js/Toast-Plugin.js @@ -0,0 +1,32 @@ + var Toast= function() { +}; + +Toast.prototype .LENGTH_SHORT = 0; +Toast.prototype .LENGTH_LONG = 1; + +Toast.prototype .show = function (msg, duration ,successCallback, failureCallback){ + return cordova.exec( + successCallback, + failureCallback, + 'ToastPlugin', + null, + [msg, duration] + ); +}; + +//Short Toast +Toast.prototype .shortshow = function (msg,successCallback, failureCallback){ + this.show(msg, this.LENGTH_SHORT ,successCallback, failureCallback); +}; + +//Long Toast +Toast.prototype .longshow = function (msg,successCallback, failureCallback){ + this.show(msg, this.LENGTH_LONG ,successCallback, failureCallback); +}; + +cordova.addConstructor(function() { + if (!window.plugins) { + window.plugins = {}; + } + window.plugins.toast = new Toast(); +}); \ No newline at end of file diff --git a/bonus/cordova/3000cg/nanhucg/www/js/fileuploader.js b/bonus/cordova/3000cg/nanhucg/www/js/fileuploader.js new file mode 100755 index 0000000..3322300 --- /dev/null +++ b/bonus/cordova/3000cg/nanhucg/www/js/fileuploader.js @@ -0,0 +1,280 @@ +/* + 131108-xxj-ajaxFileUpload.js ˢϴͼƬ jquery ֧ ie6-ie10 + jquery-1.6.1.min.js + ajaxFileUpload json + ˵ + fileElementIdѡ,ϴļID + urlѡURLַ + fileFilterѡ޶ϴļĸʽ.jpg,.bmp,.gif,.png + fileSize:ѡ0 Ϊ(IE) + data:ѡļһͬpostIJjson + $.ajax IJΪѡ + ע޷ʡĽűʾҪӦмһνſһͬ +*/ +jQuery.extend({ + // iframe Ԫ,ύӦ + createUploadIframe: function(id, uri) { + //create frame + var frameId = 'jUploadFrame' + id; + + + if (window.ActiveXObject) { + //fix ie9 and ie 10------------- + if (jQuery.browser.version == "9.0" || jQuery.browser.version == "10.0") { + var io = document.createElement('iframe'); + io.id = frameId; + io.name = frameId; + } else if (jQuery.browser.version == "6.0" || jQuery.browser.version == "7.0" || jQuery.browser.version == "8.0") { + var io = document.createElement('