You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by bh...@apache.org on 2014/03/27 16:08:18 UTC

[04/51] [partial] CB-6346 - Add node_modules to source control

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/package.json
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/package.json b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/package.json
new file mode 100644
index 0000000..d775309
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/package.json
@@ -0,0 +1,73 @@
+{
+  "name": "xmldom",
+  "version": "0.1.16",
+  "description": "A W3C Standard XML DOM(Level2 CORE) implementation and parser(DOMParser/XMLSerializer).",
+  "keywords": [
+    "w3c",
+    "dom",
+    "xml",
+    "parser",
+    "javascript",
+    "DOMParser",
+    "XMLSerializer"
+  ],
+  "author": {
+    "name": "jindw",
+    "email": "jindw@xidea.org",
+    "url": "http://www.xidea.org"
+  },
+  "homepage": "https://github.com/jindw/xmldom",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/jindw/xmldom.git"
+  },
+  "main": "./dom-parser.js",
+  "scripts": {
+    "test": "proof platform win32 && proof test */*/*.t.js || t/test"
+  },
+  "engines": {
+    "node": ">=0.1"
+  },
+  "dependencies": {},
+  "devDependencies": {
+    "proof": "0.0.28"
+  },
+  "maintainers": [
+    {
+      "name": "jindw",
+      "email": "jindw@xidea.org",
+      "url": "http://www.xidea.org"
+    }
+  ],
+  "contributors": [
+    {
+      "name": "Yaron Naveh",
+      "email": "yaronn01@gmail.com",
+      "url": "http://webservices20.blogspot.com/"
+    },
+    {
+      "name": "Harutyun Amirjanyan",
+      "email": "amirjanyan@gmail.com",
+      "url": "https://github.com/nightwing"
+    },
+    {
+      "name": "Alan Gutierrez",
+      "email": "alan@prettyrobots.com",
+      "url": "http://www.prettyrobots.com/"
+    }
+  ],
+  "bugs": {
+    "url": "http://github.com/jindw/xmldom/issues",
+    "email": "jindw@xidea.org"
+  },
+  "licenses": [
+    {
+      "type": "LGPL",
+      "url": "http://www.gnu.org/licenses/lgpl.html"
+    }
+  ],
+  "readme": "# XMLDOM [![Build Status](https://secure.travis-ci.org/bigeasy/xmldom.png?branch=master)](http://travis-ci.org/bigeasy/xmldom) [![Coverage Status](https://coveralls.io/repos/bigeasy/xmldom/badge.png?branch=master)](https://coveralls.io/r/bigeasy/xmldom) [![NPM version](https://badge.fury.io/js/xmldom.png)](http://badge.fury.io/js/xmldom)\n\nA JavaScript implementation of W3C DOM for Node.js, Rhino and the browser. Fully\ncompatible with `W3C DOM level2`; and some compatible with `level3`. Supports\n`DOMParser` and `XMLSerializer` interface such as in browser.\n\nInstall:\n-------\n>npm install xmldom\n\nExample:\n====\n```javascript\nvar DOMParser = require('xmldom').DOMParser;\nvar doc = new DOMParser().parseFromString(\n    '<xml xmlns=\"a\" xmlns:c=\"./lite\">\\n'+\n        '\\t<child>test</child>\\n'+\n        '\\t<child></child>\\n'+\n        '\\t<child/>\\n'+\n    '</xml>'\n    ,'text/xml');\ndoc.documentElement.setAttribute('x','y');\ndoc.documentElement.setAttri
 buteNS('./lite','c:x','y2');\nvar nsAttr = doc.documentElement.getAttributeNS('./lite','x')\nconsole.info(nsAttr)\nconsole.info(doc)\n```\nAPI Reference\n=====\n\n * [DOMParser](https://developer.mozilla.org/en/DOMParser):\n\n\t```javascript\n\tparseFromString(xmlsource,mimeType)\n\t```\n\t* **options extension** _by xmldom_(not BOM standard!!)\n\n\t```javascript\n\t//added the options argument\n\tnew DOMParser(options)\n\t\n\t//errorHandler is supported\n\tnew DOMParser({\n\t\t/**\n\t\t * youcan override the errorHandler for xml parser\n\t\t * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html\n\t\t */\n\t\terrorHandler:{warning:callback,error:callback,fatalError:callback}\n\t})\n\t\t\n\t```\n\n * [XMLSerializer](https://developer.mozilla.org/en/XMLSerializer)\n \n\t```javascript\n\tserializeToString(node)\n\t```\nDOM level2 method and attribute:\n------\n\n * [Node](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247)\n\t\n\t\tattribut
 e:\n\t\t\tnodeValue|prefix\n\t\treadonly attribute:\n\t\t\tnodeName|nodeType|parentNode|childNodes|firstChild|lastChild|previousSibling|nextSibling|attributes|ownerDocument|namespaceURI|localName\n\t\tmethod:\t\n\t\t\tinsertBefore(newChild, refChild)\n\t\t\treplaceChild(newChild, oldChild)\n\t\t\tremoveChild(oldChild)\n\t\t\tappendChild(newChild)\n\t\t\thasChildNodes()\n\t\t\tcloneNode(deep)\n\t\t\tnormalize()\n\t\t\tisSupported(feature, version)\n\t\t\thasAttributes()\n\n * [DOMImplementation](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-102161490)\n\t\t\n\t\tmethod:\n\t\t\thasFeature(feature, version)\n\t\t\tcreateDocumentType(qualifiedName, publicId, systemId)\n\t\t\tcreateDocument(namespaceURI, qualifiedName, doctype)\n\n * [Document](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#i-Document) : Node\n\t\t\n\t\treadonly attribute:\n\t\t\tdoctype|implementation|documentElement\n\t\tmethod:\n\t\t\tcreateElement(tagName)\n\t\t\tcreateDocume
 ntFragment()\n\t\t\tcreateTextNode(data)\n\t\t\tcreateComment(data)\n\t\t\tcreateCDATASection(data)\n\t\t\tcreateProcessingInstruction(target, data)\n\t\t\tcreateAttribute(name)\n\t\t\tcreateEntityReference(name)\n\t\t\tgetElementsByTagName(tagname)\n\t\t\timportNode(importedNode, deep)\n\t\t\tcreateElementNS(namespaceURI, qualifiedName)\n\t\t\tcreateAttributeNS(namespaceURI, qualifiedName)\n\t\t\tgetElementsByTagNameNS(namespaceURI, localName)\n\t\t\tgetElementById(elementId)\n\n * [DocumentFragment](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-B63ED1A3) : Node\n * [Element](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-745549614) : Node\n\t\t\n\t\treadonly attribute:\n\t\t\ttagName\n\t\tmethod:\n\t\t\tgetAttribute(name)\n\t\t\tsetAttribute(name, value)\n\t\t\tremoveAttribute(name)\n\t\t\tgetAttributeNode(name)\n\t\t\tsetAttributeNode(newAttr)\n\t\t\tremoveAttributeNode(oldAttr)\n\t\t\tgetElementsByTagName(name)\n\t\t\tgetAttributeNS(n
 amespaceURI, localName)\n\t\t\tsetAttributeNS(namespaceURI, qualifiedName, value)\n\t\t\tremoveAttributeNS(namespaceURI, localName)\n\t\t\tgetAttributeNodeNS(namespaceURI, localName)\n\t\t\tsetAttributeNodeNS(newAttr)\n\t\t\tgetElementsByTagNameNS(namespaceURI, localName)\n\t\t\thasAttribute(name)\n\t\t\thasAttributeNS(namespaceURI, localName)\n\n * [Attr](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-637646024) : Node\n\t\n\t\tattribute:\n\t\t\tvalue\n\t\treadonly attribute:\n\t\t\tname|specified|ownerElement\n\n * [NodeList](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177)\n\t\t\n\t\treadonly attribute:\n\t\t\tlength\n\t\tmethod:\n\t\t\titem(index)\n\t\n * [NamedNodeMap](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1780488922)\n\n\t\treadonly attribute:\n\t\t\tlength\n\t\tmethod:\n\t\t\tgetNamedItem(name)\n\t\t\tsetNamedItem(arg)\n\t\t\tremoveNamedItem(name)\n\t\t\titem(index)\n\t\t\tgetNamedItemNS(names
 paceURI, localName)\n\t\t\tsetNamedItemNS(arg)\n\t\t\tremoveNamedItemNS(namespaceURI, localName)\n\t\t\n * [CharacterData](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-FF21A306) : Node\n\t\n\t\tmethod:\n\t\t\tsubstringData(offset, count)\n\t\t\tappendData(arg)\n\t\t\tinsertData(offset, arg)\n\t\t\tdeleteData(offset, count)\n\t\t\treplaceData(offset, count, arg)\n\t\t\n * [Text](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1312295772) : CharacterData\n\t\n\t\tmethod:\n\t\t\tsplitText(offset)\n\t\t\t\n * [CDATASection](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-667469212)\n * [Comment](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1728279322) : CharacterData\n\t\n * [DocumentType](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-412266927)\n\t\n\t\treadonly attribute:\n\t\t\tname|entities|notations|publicId|systemId|internalSubset\n\t\t\t\n * Notation : Node\n\t\n\t\tre
 adonly attribute:\n\t\t\tpublicId|systemId\n\t\t\t\n * Entity : Node\n\t\n\t\treadonly attribute:\n\t\t\tpublicId|systemId|notationName\n\t\t\t\n * EntityReference : Node \n * ProcessingInstruction : Node \n\t\n\t\tattribute:\n\t\t\tdata\n\t\treadonly attribute:\n\t\t\ttarget\n\t\t\nDOM level 3 support:\n-----\n\n * [Node](http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-textContent)\n\t\t\n\t\tattribute:\n\t\t\ttextContent\n\t\tmethod:\n\t\t\tisDefaultNamespace(namespaceURI){\n\t\t\tlookupNamespaceURI(prefix)\n\nDOM extension by xmldom\n---\n * [Node] Source position extension; \n\t\t\n\t\tattribute:\n\t\t\t//Numbered starting from '1'\n\t\t\tlineNumber\n\t\t\t//Numbered starting from '1'\n\t\t\tcolumnNumber\n",
+  "readmeFilename": "readme.md",
+  "_id": "xmldom@0.1.16",
+  "_from": "xmldom@0.1.x"
+}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/readme.md
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/readme.md b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/readme.md
new file mode 100644
index 0000000..5ce0e81
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/readme.md
@@ -0,0 +1,213 @@
+# XMLDOM [![Build Status](https://secure.travis-ci.org/bigeasy/xmldom.png?branch=master)](http://travis-ci.org/bigeasy/xmldom) [![Coverage Status](https://coveralls.io/repos/bigeasy/xmldom/badge.png?branch=master)](https://coveralls.io/r/bigeasy/xmldom) [![NPM version](https://badge.fury.io/js/xmldom.png)](http://badge.fury.io/js/xmldom)
+
+A JavaScript implementation of W3C DOM for Node.js, Rhino and the browser. Fully
+compatible with `W3C DOM level2`; and some compatible with `level3`. Supports
+`DOMParser` and `XMLSerializer` interface such as in browser.
+
+Install:
+-------
+>npm install xmldom
+
+Example:
+====
+```javascript
+var DOMParser = require('xmldom').DOMParser;
+var doc = new DOMParser().parseFromString(
+    '<xml xmlns="a" xmlns:c="./lite">\n'+
+        '\t<child>test</child>\n'+
+        '\t<child></child>\n'+
+        '\t<child/>\n'+
+    '</xml>'
+    ,'text/xml');
+doc.documentElement.setAttribute('x','y');
+doc.documentElement.setAttributeNS('./lite','c:x','y2');
+var nsAttr = doc.documentElement.getAttributeNS('./lite','x')
+console.info(nsAttr)
+console.info(doc)
+```
+API Reference
+=====
+
+ * [DOMParser](https://developer.mozilla.org/en/DOMParser):
+
+	```javascript
+	parseFromString(xmlsource,mimeType)
+	```
+	* **options extension** _by xmldom_(not BOM standard!!)
+
+	```javascript
+	//added the options argument
+	new DOMParser(options)
+	
+	//errorHandler is supported
+	new DOMParser({
+		/**
+		 * youcan override the errorHandler for xml parser
+		 * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html
+		 */
+		errorHandler:{warning:callback,error:callback,fatalError:callback}
+	})
+		
+	```
+
+ * [XMLSerializer](https://developer.mozilla.org/en/XMLSerializer)
+ 
+	```javascript
+	serializeToString(node)
+	```
+DOM level2 method and attribute:
+------
+
+ * [Node](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247)
+	
+		attribute:
+			nodeValue|prefix
+		readonly attribute:
+			nodeName|nodeType|parentNode|childNodes|firstChild|lastChild|previousSibling|nextSibling|attributes|ownerDocument|namespaceURI|localName
+		method:	
+			insertBefore(newChild, refChild)
+			replaceChild(newChild, oldChild)
+			removeChild(oldChild)
+			appendChild(newChild)
+			hasChildNodes()
+			cloneNode(deep)
+			normalize()
+			isSupported(feature, version)
+			hasAttributes()
+
+ * [DOMImplementation](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-102161490)
+		
+		method:
+			hasFeature(feature, version)
+			createDocumentType(qualifiedName, publicId, systemId)
+			createDocument(namespaceURI, qualifiedName, doctype)
+
+ * [Document](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#i-Document) : Node
+		
+		readonly attribute:
+			doctype|implementation|documentElement
+		method:
+			createElement(tagName)
+			createDocumentFragment()
+			createTextNode(data)
+			createComment(data)
+			createCDATASection(data)
+			createProcessingInstruction(target, data)
+			createAttribute(name)
+			createEntityReference(name)
+			getElementsByTagName(tagname)
+			importNode(importedNode, deep)
+			createElementNS(namespaceURI, qualifiedName)
+			createAttributeNS(namespaceURI, qualifiedName)
+			getElementsByTagNameNS(namespaceURI, localName)
+			getElementById(elementId)
+
+ * [DocumentFragment](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-B63ED1A3) : Node
+ * [Element](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-745549614) : Node
+		
+		readonly attribute:
+			tagName
+		method:
+			getAttribute(name)
+			setAttribute(name, value)
+			removeAttribute(name)
+			getAttributeNode(name)
+			setAttributeNode(newAttr)
+			removeAttributeNode(oldAttr)
+			getElementsByTagName(name)
+			getAttributeNS(namespaceURI, localName)
+			setAttributeNS(namespaceURI, qualifiedName, value)
+			removeAttributeNS(namespaceURI, localName)
+			getAttributeNodeNS(namespaceURI, localName)
+			setAttributeNodeNS(newAttr)
+			getElementsByTagNameNS(namespaceURI, localName)
+			hasAttribute(name)
+			hasAttributeNS(namespaceURI, localName)
+
+ * [Attr](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-637646024) : Node
+	
+		attribute:
+			value
+		readonly attribute:
+			name|specified|ownerElement
+
+ * [NodeList](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177)
+		
+		readonly attribute:
+			length
+		method:
+			item(index)
+	
+ * [NamedNodeMap](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1780488922)
+
+		readonly attribute:
+			length
+		method:
+			getNamedItem(name)
+			setNamedItem(arg)
+			removeNamedItem(name)
+			item(index)
+			getNamedItemNS(namespaceURI, localName)
+			setNamedItemNS(arg)
+			removeNamedItemNS(namespaceURI, localName)
+		
+ * [CharacterData](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-FF21A306) : Node
+	
+		method:
+			substringData(offset, count)
+			appendData(arg)
+			insertData(offset, arg)
+			deleteData(offset, count)
+			replaceData(offset, count, arg)
+		
+ * [Text](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1312295772) : CharacterData
+	
+		method:
+			splitText(offset)
+			
+ * [CDATASection](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-667469212)
+ * [Comment](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1728279322) : CharacterData
+	
+ * [DocumentType](http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-412266927)
+	
+		readonly attribute:
+			name|entities|notations|publicId|systemId|internalSubset
+			
+ * Notation : Node
+	
+		readonly attribute:
+			publicId|systemId
+			
+ * Entity : Node
+	
+		readonly attribute:
+			publicId|systemId|notationName
+			
+ * EntityReference : Node 
+ * ProcessingInstruction : Node 
+	
+		attribute:
+			data
+		readonly attribute:
+			target
+		
+DOM level 3 support:
+-----
+
+ * [Node](http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-textContent)
+		
+		attribute:
+			textContent
+		method:
+			isDefaultNamespace(namespaceURI){
+			lookupNamespaceURI(prefix)
+
+DOM extension by xmldom
+---
+ * [Node] Source position extension; 
+		
+		attribute:
+			//Numbered starting from '1'
+			lineNumber
+			//Numbered starting from '1'
+			columnNumber

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/sax.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/sax.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/sax.js
new file mode 100644
index 0000000..be6e34e
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/sax.js
@@ -0,0 +1,564 @@
+//[4]   	NameStartChar	   ::=   	":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
+//[4a]   	NameChar	   ::=   	NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
+//[5]   	Name	   ::=   	NameStartChar (NameChar)*
+var nameStartChar = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]///\u10000-\uEFFFF
+var nameChar = new RegExp("[\\-\\.0-9"+nameStartChar.source.slice(1,-1)+"\u00B7\u0300-\u036F\\ux203F-\u2040]");
+var tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\:'+nameStartChar.source+nameChar.source+'*)?$');
+//var tagNamePattern = /^[a-zA-Z_][\w\-\.]*(?:\:[a-zA-Z_][\w\-\.]*)?$/
+//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')
+
+//S_TAG,	S_ATTR,	S_EQ,	S_V
+//S_ATTR_S,	S_E,	S_S,	S_C
+var S_TAG = 0;//tag name offerring
+var S_ATTR = 1;//attr name offerring 
+var S_ATTR_S=2;//attr name end and space offer
+var S_EQ = 3;//=space?
+var S_V = 4;//attr value(no quot value only)
+var S_E = 5;//attr value end and no space(quot end)
+var S_S = 6;//(attr value end || tag end ) && (space offer)
+var S_C = 7;//closed el<el />
+
+function XMLReader(){
+}
+
+XMLReader.prototype = {
+	parse:function(source,defaultNSMap,entityMap){
+		var domBuilder = this.domBuilder;
+		domBuilder.startDocument();
+		_copy(defaultNSMap ,defaultNSMap = {})
+		parse(source,defaultNSMap,entityMap,
+				domBuilder,this.errorHandler);
+		domBuilder.endDocument();
+	}
+}
+function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){
+  function fixedFromCharCode(code) {
+		// String.prototype.fromCharCode does not supports
+		// > 2 bytes unicode chars directly
+		if (code > 0xffff) {
+			code -= 0x10000;
+			var surrogate1 = 0xd800 + (code >> 10)
+				, surrogate2 = 0xdc00 + (code & 0x3ff);
+
+			return String.fromCharCode(surrogate1, surrogate2);
+		} else {
+			return String.fromCharCode(code);
+		}
+	}
+	function entityReplacer(a){
+		var k = a.slice(1,-1);
+		if(k in entityMap){
+			return entityMap[k]; 
+		}else if(k.charAt(0) === '#'){
+			return fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))
+		}else{
+			errorHandler.error('entity not found:'+a);
+			return a;
+		}
+	}
+	function appendText(end){//has some bugs
+		var xt = source.substring(start,end).replace(/&#?\w+;/g,entityReplacer);
+		locator&&position(start);
+		domBuilder.characters(xt,0,end-start);
+		start = end
+	}
+	function position(start,m){
+		while(start>=endPos && (m = linePattern.exec(source))){
+			startPos = m.index;
+			endPos = startPos + m[0].length;
+			locator.lineNumber++;
+			//console.log('line++:',locator,startPos,endPos)
+		}
+		locator.columnNumber = start-startPos+1;
+	}
+	var startPos = 0;
+	var endPos = 0;
+	var linePattern = /.+(?:\r\n?|\n)|.*$/g
+	var locator = domBuilder.locator;
+	
+	var parseStack = [{currentNSMap:defaultNSMapCopy}]
+	var closeMap = {};
+	var start = 0;
+	while(true){
+		var i = source.indexOf('<',start);
+		if(i>start){
+			appendText(i);
+		}
+		switch(source.charAt(i+1)){
+		case '/':
+			var end = source.indexOf('>',i+3);
+			var tagName = source.substring(i+2,end);
+			var config = parseStack.pop();
+			var localNSMap = config.localNSMap;
+			
+	        if(config.tagName != tagName){
+	            errorHandler.fatalError("end tag name: "+tagName+' is not match the current start tagName:'+config.tagName );
+	        }
+			domBuilder.endElement(config.uri,config.localName,tagName);
+			if(localNSMap){
+				for(var prefix in localNSMap){
+					domBuilder.endPrefixMapping(prefix) ;
+				}
+			}
+			end++;
+			break;
+			// end elment
+		case '?':// <?...?>
+			locator&&position(i);
+			end = parseInstruction(source,i,domBuilder);
+			break;
+		case '!':// <!doctype,<![CDATA,<!--
+			locator&&position(i);
+			end = parseDCC(source,i,domBuilder);
+			break;
+		default:
+			if(i<0){
+				if(!source.substr(start).match(/^\s*$/)){
+					errorHandler.error('source code out of document root');
+				}
+				return;
+			}else{
+				try{
+					locator&&position(i);
+					var el = new ElementAttributes();
+					//elStartEnd
+					var end = parseElementStartPart(source,i,el,entityReplacer,errorHandler);
+					var len = el.length;
+					//position fixed
+					if(len && locator){
+						var backup = copyLocator(locator,{});
+						for(var i = 0;i<len;i++){
+							var a = el[i];
+							position(a.offset);
+							a.offset = copyLocator(locator,{});
+						}
+						copyLocator(backup,locator);
+					}
+					el.closed = el.closed||fixSelfClosed(source,end,el.tagName,closeMap);
+					appendElement(el,domBuilder,parseStack);
+					
+					
+					if(el.uri === 'http://www.w3.org/1999/xhtml' && !el.closed){
+						end = parseHtmlSpecialContent(source,end,el.tagName,entityReplacer,domBuilder)
+					}else{
+						end++;
+					}
+				}catch(e){
+					errorHandler.error('element parse error: '+e);
+					end = -1;
+				}
+			}
+
+		}
+		if(end<0){
+			//TODO: 这里有可能sax回退,有位置错误风险
+			appendText(i+1);
+		}else{
+			start = end;
+		}
+	}
+}
+function copyLocator(f,t){
+	t.lineNumber = f.lineNumber;
+	t.columnNumber = f.columnNumber;
+	return t;
+	
+}
+
+/**
+ * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);
+ * @return end of the elementStartPart(end of elementEndPart for selfClosed el)
+ */
+function parseElementStartPart(source,start,el,entityReplacer,errorHandler){
+	var attrName;
+	var value;
+	var p = ++start;
+	var s = S_TAG;//status
+	while(true){
+		var c = source.charAt(p);
+		switch(c){
+		case '=':
+			if(s === S_ATTR){//attrName
+				attrName = source.slice(start,p);
+				s = S_EQ;
+			}else if(s === S_ATTR_S){
+				s = S_EQ;
+			}else{
+				//fatalError: equal must after attrName or space after attrName
+				throw new Error('attribute equal must after attrName');
+			}
+			break;
+		case '\'':
+		case '"':
+			if(s === S_EQ){//equal
+				start = p+1;
+				p = source.indexOf(c,start)
+				if(p>0){
+					value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer);
+					el.add(attrName,value,start-1);
+					s = S_E;
+				}else{
+					//fatalError: no end quot match
+					throw new Error('attribute value no end \''+c+'\' match');
+				}
+			}else if(s == S_V){
+				value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer);
+				//console.log(attrName,value,start,p)
+				el.add(attrName,value,start);
+				//console.dir(el)
+				errorHandler.warning('attribute "'+attrName+'" missed start quot('+c+')!!');
+				start = p+1;
+				s = S_E
+			}else{
+				//fatalError: no equal before
+				throw new Error('attribute value must after "="');
+			}
+			break;
+		case '/':
+			switch(s){
+			case S_TAG:
+				el.setTagName(source.slice(start,p));
+			case S_E:
+			case S_S:
+			case S_C:
+				s = S_C;
+				el.closed = true;
+			case S_V:
+			case S_ATTR:
+			case S_ATTR_S:
+				break;
+			//case S_EQ:
+			default:
+				throw new Error("attribute invalid close char('/')")
+			}
+			break;
+		case '>':
+			switch(s){
+			case S_TAG:
+				el.setTagName(source.slice(start,p));
+			case S_E:
+			case S_S:
+			case S_C:
+				break;//normal
+			case S_V://Compatible state
+			case S_ATTR:
+				value = source.slice(start,p);
+				if(value.slice(-1) === '/'){
+					el.closed  = true;
+					value = value.slice(0,-1)
+				}
+			case S_ATTR_S:
+				if(s === S_ATTR_S){
+					value = attrName;
+				}
+				if(s == S_V){
+					errorHandler.warning('attribute "'+value+'" missed quot(")!!');
+					el.add(attrName,value.replace(/&#?\w+;/g,entityReplacer),start)
+				}else{
+					errorHandler.warning('attribute "'+value+'" missed value!! "'+value+'" instead!!')
+					el.add(value,value,start)
+				}
+				break;
+			case S_EQ:
+				throw new Error('attribute value missed!!');
+			}
+//			console.log(tagName,tagNamePattern,tagNamePattern.test(tagName))
+			return p;
+		/*xml space '\x20' | #x9 | #xD | #xA; */
+		case '\u0080':
+			c = ' ';
+		default:
+			if(c<= ' '){//space
+				switch(s){
+				case S_TAG:
+					el.setTagName(source.slice(start,p));//tagName
+					s = S_S;
+					break;
+				case S_ATTR:
+					attrName = source.slice(start,p)
+					s = S_ATTR_S;
+					break;
+				case S_V:
+					var value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer);
+					errorHandler.warning('attribute "'+value+'" missed quot(")!!');
+					el.add(attrName,value,start)
+				case S_E:
+					s = S_S;
+					break;
+				//case S_S:
+				//case S_EQ:
+				//case S_ATTR_S:
+				//	void();break;
+				//case S_C:
+					//ignore warning
+				}
+			}else{//not space
+//S_TAG,	S_ATTR,	S_EQ,	S_V
+//S_ATTR_S,	S_E,	S_S,	S_C
+				switch(s){
+				//case S_TAG:void();break;
+				//case S_ATTR:void();break;
+				//case S_V:void();break;
+				case S_ATTR_S:
+					errorHandler.warning('attribute "'+attrName+'" missed value!! "'+attrName+'" instead!!')
+					el.add(attrName,attrName,start);
+					start = p;
+					s = S_ATTR;
+					break;
+				case S_E:
+					errorHandler.warning('attribute space is required"'+attrName+'"!!')
+				case S_S:
+					s = S_ATTR;
+					start = p;
+					break;
+				case S_EQ:
+					s = S_V;
+					start = p;
+					break;
+				case S_C:
+					throw new Error("elements closed character '/' and '>' must be connected to");
+				}
+			}
+		}
+		p++;
+	}
+}
+/**
+ * @return end of the elementStartPart(end of elementEndPart for selfClosed el)
+ */
+function appendElement(el,domBuilder,parseStack){
+	var tagName = el.tagName;
+	var localNSMap = null;
+	var currentNSMap = parseStack[parseStack.length-1].currentNSMap;
+	var i = el.length;
+	while(i--){
+		var a = el[i];
+		var qName = a.qName;
+		var value = a.value;
+		var nsp = qName.indexOf(':');
+		if(nsp>0){
+			var prefix = a.prefix = qName.slice(0,nsp);
+			var localName = qName.slice(nsp+1);
+			var nsPrefix = prefix === 'xmlns' && localName
+		}else{
+			localName = qName;
+			prefix = null
+			nsPrefix = qName === 'xmlns' && ''
+		}
+		//can not set prefix,because prefix !== ''
+		a.localName = localName ;
+		//prefix == null for no ns prefix attribute 
+		if(nsPrefix !== false){//hack!!
+			if(localNSMap == null){
+				localNSMap = {}
+				_copy(currentNSMap,currentNSMap={})
+			}
+			currentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;
+			a.uri = 'http://www.w3.org/2000/xmlns/'
+			domBuilder.startPrefixMapping(nsPrefix, value) 
+		}
+	}
+	var i = el.length;
+	while(i--){
+		a = el[i];
+		var prefix = a.prefix;
+		if(prefix){//no prefix attribute has no namespace
+			if(prefix === 'xml'){
+				a.uri = 'http://www.w3.org/XML/1998/namespace';
+			}if(prefix !== 'xmlns'){
+				a.uri = currentNSMap[prefix]
+			}
+		}
+	}
+	var nsp = tagName.indexOf(':');
+	if(nsp>0){
+		prefix = el.prefix = tagName.slice(0,nsp);
+		localName = el.localName = tagName.slice(nsp+1);
+	}else{
+		prefix = null;//important!!
+		localName = el.localName = tagName;
+	}
+	//no prefix element has default namespace
+	var ns = el.uri = currentNSMap[prefix || ''];
+	domBuilder.startElement(ns,localName,tagName,el);
+	//endPrefixMapping and startPrefixMapping have not any help for dom builder
+	//localNSMap = null
+	if(el.closed){
+		domBuilder.endElement(ns,localName,tagName);
+		if(localNSMap){
+			for(prefix in localNSMap){
+				domBuilder.endPrefixMapping(prefix) 
+			}
+		}
+	}else{
+		el.currentNSMap = currentNSMap;
+		el.localNSMap = localNSMap;
+		parseStack.push(el);
+	}
+}
+function parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){
+	if(/^(?:script|textarea)$/i.test(tagName)){
+		var elEndStart =  source.indexOf('</'+tagName+'>',elStartEnd);
+		var text = source.substring(elStartEnd+1,elEndStart);
+		if(/[&<]/.test(text)){
+			if(/^script$/i.test(tagName)){
+				//if(!/\]\]>/.test(text)){
+					//lexHandler.startCDATA();
+					domBuilder.characters(text,0,text.length);
+					//lexHandler.endCDATA();
+					return elEndStart;
+				//}
+			}//}else{//text area
+				text = text.replace(/&#?\w+;/g,entityReplacer);
+				domBuilder.characters(text,0,text.length);
+				return elEndStart;
+			//}
+			
+		}
+	}
+	return elStartEnd+1;
+}
+function fixSelfClosed(source,elStartEnd,tagName,closeMap){
+	//if(tagName in closeMap){
+	var pos = closeMap[tagName];
+	if(pos == null){
+		//console.log(tagName)
+		pos = closeMap[tagName] = source.lastIndexOf('</'+tagName+'>')
+	}
+	return pos<elStartEnd;
+	//} 
+}
+function _copy(source,target){
+	for(var n in source){target[n] = source[n]}
+}
+function parseDCC(source,start,domBuilder){//sure start with '<!'
+	var next= source.charAt(start+2)
+	switch(next){
+	case '-':
+		if(source.charAt(start + 3) === '-'){
+			var end = source.indexOf('-->',start+4);
+			//append comment source.substring(4,end)//<!--
+			domBuilder.comment(source,start+4,end-start-4);
+			return end+3;
+		}else{
+			//error
+			return -1;
+		}
+	default:
+		if(source.substr(start+3,6) == 'CDATA['){
+			var end = source.indexOf(']]>',start+9);
+			domBuilder.startCDATA();
+			domBuilder.characters(source,start+9,end-start-9);
+			domBuilder.endCDATA() 
+			return end+3;
+		}
+		//<!DOCTYPE
+		//startDTD(java.lang.String name, java.lang.String publicId, java.lang.String systemId) 
+		var matchs = split(source,start);
+		var len = matchs.length;
+		if(len>1 && /!doctype/i.test(matchs[0][0])){
+			var name = matchs[1][0];
+			var pubid = len>3 && /^public$/i.test(matchs[2][0]) && matchs[3][0]
+			var sysid = len>4 && matchs[4][0];
+			var lastMatch = matchs[len-1]
+			domBuilder.startDTD(name,pubid,sysid);
+			domBuilder.endDTD();
+			
+			return lastMatch.index+lastMatch[0].length
+		}
+	}
+	return -1;
+}
+
+
+
+function parseInstruction(source,start,domBuilder){
+	var end = source.indexOf('?>',start);
+	if(end){
+		var match = source.substring(start,end).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);
+		if(match){
+			var len = match[0].length;
+			domBuilder.processingInstruction(match[1], match[2]) ;
+			return end+2;
+		}else{//error
+			return -1;
+		}
+	}
+	return -1;
+}
+
+/**
+ * @param source
+ */
+function ElementAttributes(source){
+	
+}
+ElementAttributes.prototype = {
+	setTagName:function(tagName){
+		if(!tagNamePattern.test(tagName)){
+			throw new Error('invalid tagName:'+tagName)
+		}
+		this.tagName = tagName
+	},
+	add:function(qName,value,offset){
+		if(!tagNamePattern.test(qName)){
+			throw new Error('invalid attribute:'+qName)
+		}
+		this[this.length++] = {qName:qName,value:value,offset:offset}
+	},
+	length:0,
+	getLocalName:function(i){return this[i].localName},
+	getOffset:function(i){return this[i].offset},
+	getQName:function(i){return this[i].qName},
+	getURI:function(i){return this[i].uri},
+	getValue:function(i){return this[i].value}
+//	,getIndex:function(uri, localName)){
+//		if(localName){
+//			
+//		}else{
+//			var qName = uri
+//		}
+//	},
+//	getValue:function(){return this.getValue(this.getIndex.apply(this,arguments))},
+//	getType:function(uri,localName){}
+//	getType:function(i){},
+}
+
+
+
+
+function _set_proto_(thiz,parent){
+	thiz.__proto__ = parent;
+	return thiz;
+}
+if(!(_set_proto_({},_set_proto_.prototype) instanceof _set_proto_)){
+	_set_proto_ = function(thiz,parent){
+		function p(){};
+		p.prototype = parent;
+		p = new p();
+		for(parent in thiz){
+			p[parent] = thiz[parent];
+		}
+		return p;
+	}
+}
+
+function split(source,start){
+	var match;
+	var buf = [];
+	var reg = /'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;
+	reg.lastIndex = start;
+	reg.exec(source);//skip <
+	while(match = reg.exec(source)){
+		buf.push(match);
+		if(match[1])return buf;
+	}
+}
+
+if(typeof require == 'function'){
+	exports.XMLReader = XMLReader;
+}
+
+if(typeof require == 'function'){
+exports.XMLReader=XMLReader;
+}

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/cover
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/cover b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/cover
new file mode 100755
index 0000000..5b146e4
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/cover
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+set -e
+
+rm -rf coverage
+
+count=1;
+for file in $(find t -name \*.t.js); do
+  node_modules/.bin/istanbul cover -x 't/**' $file > /dev/null 2>&1
+  mv coverage/coverage.json coverage/coverage$count.json
+  count=$(expr $count + 1)
+done
+
+node_modules/.bin/istanbul report --root coverage --dir coverage > /dev/null
+
+sed -i -e s,'^SF:'`pwd`/,SF:, coverage/lcov.info
+
+exit 0

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/dom/require.t.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/dom/require.t.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/dom/require.t.js
new file mode 100755
index 0000000..2464e93
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/dom/require.t.js
@@ -0,0 +1,5 @@
+#!/usr/bin/env node
+
+require('proof')(1, function (ok) {
+  ok(require('../..'), 'require');
+});

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/test
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/test b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/test
new file mode 100755
index 0000000..460073e
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/t/test
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+set -e
+
+echo ""
+
+(proof run t/*/*.t.js | tee .proof.out | proof progress) || (proof errors < .proof.out) || exit 1
+
+if [ "$TRAVIS" = "true" ]; then
+  echo "running with coverage"
+  t/cover
+
+  echo "submitting to coveralls.io"
+  (cat coverage/lcov.info | node_modules/.bin/coveralls) > /dev/null 2>&1
+fi
+
+echo ""

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/index.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/index.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/index.js
new file mode 100644
index 0000000..1998125
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/index.js
@@ -0,0 +1 @@
+require('./o3xml')
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/mock.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/mock.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/mock.js
new file mode 100644
index 0000000..42013e7
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/mock.js
@@ -0,0 +1 @@
+exports.test = 1;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/o3xml.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/o3xml.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/o3xml.js
new file mode 100644
index 0000000..26a86b2
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/3rd-cases/o3xml.js
@@ -0,0 +1,21 @@
+var DOMParser = require('xmldom').DOMParser;
+require('./mock')
+//Compatibility
+{
+	var doc = new DOMParser().parseFromString("<xml/>",'text/xml');
+	var np = doc.__proto__.__proto__.__proto__;
+	for(var n in np){
+		if(/_NODE$/.test(n)){
+//			console.log(n.replace(/_NODE$/,''),np[n])
+			np[n.replace(/_NODE$/,'')] = np[n];
+		}
+	}
+	
+}
+
+require.cache[require.resolve('node-o3-xml')] 
+	= require.cache[require.resolve('./mock')];
+require('node-o3-xml').parseFromString = function(xml){
+	return new DOMParser().parseFromString(xml,'text/xml');
+}
+require('node-o3-xml/test/test')

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/big-file-performance.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/big-file-performance.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/big-file-performance.js
new file mode 100644
index 0000000..a8007f9
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/big-file-performance.js
@@ -0,0 +1,152 @@
+var wows = require('vows');
+var assert = require('assert');
+var XMLSerializer = require('xmldom').XMLSerializer;
+var DOMParser = require('xmldom').DOMParser;
+var DomJS = require("dom-js").DomJS;
+try{
+	var Libxml = require('libxmljs');
+}catch(e){
+}
+
+function xmldom(data){
+	console.time('xmldom');
+	var doc = new DOMParser({locator:null,checkLater:true}).parseFromString(data);
+	console.timeEnd('xmldom');
+	doc.toString = function(){
+		return new XMLSerializer().serializeToString(doc);
+	}
+	return doc;
+}
+function libxml(data){
+	if(Libxml){
+		console.time('libxml');
+		var doc = Libxml.parseXmlString(data);
+		console.timeEnd('libxml');
+		var ToString=doc.toString ;
+		doc.toString = function(){
+			return ToString.apply(this,arguments).replace(/^\s+|\s+$/g,'');
+		}
+		return doc;
+	}else{
+		console.warn('libxml is not installed')
+	}
+}
+
+function domjs(data){
+	console.time('dom-js');
+	var doc;
+	new DomJS().parse(data, function(err, dom) {
+	    doc = dom;
+	});
+	console.timeEnd('dom-js');
+	
+	doc.toString = function(){
+		return doc.toXml();
+	}
+	return doc
+}
+var maxRandomAttr =parseInt(Math.random()*60);
+console.log('maxRandomAttr',maxRandomAttr)
+function addAttributes(el){
+	var c =parseInt(Math.random()*maxRandomAttr);
+	while(c--){
+		el.setAttribute('dynamic-attr'+c,c+new Array(c).join('.'));
+	}
+	var child = el.firstChild;
+	while(child){
+		if(child.nodeType == 1){
+			addAttributes(child)
+		}else if(child.nodeType == 4){//cdata
+			el.insertBefore(el.ownerDocument.createTextNode(child.data),child);
+			el.removeChild(child);
+		}
+		child = child.nextSibling;
+	}
+}
+// Create a Test Suite
+wows.describe('XML Node Parse').addBatch({
+    "big file parse":function(){
+		var fs = require('fs');
+		var path = require('path')
+		var data = fs.readFileSync(path.resolve(__dirname,'./test.xml'), 'ascii');
+		//data = "<?xml version=\"1.0\"?><xml><child> ![CDATA[v]] d &amp;</child>\n</xml>"
+		console.log('test simple xml')
+		var t1 = new Date();
+		var doc1 = xmldom(data);
+		var t2 = new Date();
+		var doc2 = domjs(data);
+		var t3 = new Date();
+		var doc3 = libxml(data);
+		var t4 = new Date();
+		var xmldomTime = t2-t1;
+		var domjsTime = t3-t2;
+		console.assert(domjsTime>xmldomTime,'xmldom performance must more height!!')
+		
+		
+		doc1 = doc1.cloneNode(true);
+		addAttributes(doc1.documentElement);
+		
+		data = doc1.toString();
+		console.log('test more attribute xml')
+		var t1 = new Date();
+		var doc1 = xmldom(data);
+		var t2 = new Date();
+		var doc2 = domjs(data);
+		var t3 = new Date();
+		var doc3 = libxml(data);
+		var t4 = new Date();
+		var xmldomTime = t2-t1;
+		var domjsTime = t3-t2;
+		console.assert(domjsTime>xmldomTime,'xmldom performance must more height!!')
+		function xmlReplace(a,v){
+			switch(v){
+			case '&':
+			return '&amp;'
+			case '<':
+			return '&lt;'
+			default:
+			if(v.length>1){
+				return v.replace(/([&<])/g,xmlReplace)
+			}
+			}
+		}
+		xmldomresult = (domjs(doc1+'')+'').replace(/^<\?.*?\?>\s*|<!\[CDATA\[([\s\S]*?)\]\]>/g,xmlReplace)
+		domjsresult = (doc2+'').replace(/^<\?.*?\?>\s*|<!\[CDATA\[([\s\S]*?)\]\]>/g,xmlReplace)
+		data = xmldomresult;
+		//console.log(data.substring(100,200))
+		
+		console.log('test more attribute xml without cdata')
+		var t1 = new Date();
+		var doc1 = xmldom(data);
+		var t2 = new Date();
+		var doc2 = domjs(data);
+		var t3 = new Date();
+		var doc3 = libxml(data);
+		var t4 = new Date();
+		var xmldomTime = t2-t1;
+		var domjsTime = t3-t2;
+		console.assert(domjsTime>xmldomTime,'xmldom performance must more height!!')
+		
+		//console.log(xmldomresult,domjsresult)
+		
+		//assert.equal(xmldomresult,domjsresult);
+		//,xmldomresult,domjsresult)
+		if(xmldomresult !== domjsresult){
+			for(var i=0;i<xmldomresult.length;i++){
+				if(xmldomresult.charAt(i)!=domjsresult.charAt(i)){
+					console.log(xmldomresult.charAt(i))
+					var begin = i-50;
+					var len = 100;
+					xmldomresult = xmldomresult.substr(begin,len)
+					domjsresult = domjsresult.substr(begin,len)
+					//console.log(xmldomresult.length,domjsresult.length)
+					console.log('pos'+i,'\n',xmldomresult,'\n\n\n\n',domjsresult)
+					console.assert(xmldomresult == domjsresult)
+					break;
+				}
+			} 
+			
+		}
+		//console.assert(xmldomresult == domjsresult,xmldomresult.length,i)
+    }
+}).run(); // Run it

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/attr.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/attr.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/attr.js
new file mode 100644
index 0000000..b48cbde
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/attr.js
@@ -0,0 +1,64 @@
+var wows = require('vows');
+var DOMParser = require('xmldom').DOMParser;
+
+// Create a Test Suite
+wows.describe('XML attrs').addBatch({
+    "set attribute":function(){
+    	var root = new DOMParser().parseFromString("<xml/>",'text/xml').documentElement;
+    	root.setAttribute('a','1');
+    	console.assert(root.attributes[0].localName == 'a');
+    	root.setAttribute('b',2);
+    	root.setAttribute('a',1);
+    	root.setAttribute('a',1);
+    	root.setAttribute('a',1);
+    	console.assert(root.attributes.length == 2);
+    	try {
+    		var c = root.ownerDocument.createElement('c');
+    		c.setAttributeNode(root.attributes.item(0));
+    	} catch (e) {
+    		console.assert(e.code == 10);
+    		return;
+    	}
+    	console.assert(false);
+    },
+    "set ns attribute":function(){
+    	var root = new DOMParser().parseFromString("<xml xmlns:a='a' xmlns:b='b' xmlns='e'><child/></xml>",'text/xml').documentElement;
+    	var child = root.firstChild
+    	child.setAttributeNS('a','a:a','1');
+    	child.setAttributeNS('b','b:b','2');
+    	child.setAttributeNS('b','b:a','1');
+    	console.assert(child.attributes.length == 3,child.attributes.length,child+'');
+    	child.setAttribute('a',1);
+    	child.setAttributeNS('b','b:b','2');
+    	console.assert(child.attributes.length == 4,child.attributes.length);
+    	try {
+    		var c = root.ownerDocument.createElement('c');
+    		c.setAttributeNodeNS(root.attributes.item(0));
+    	} catch (e) {
+    		console.assert(e.code == 10);
+    		return;
+    	}
+    	console.assert(false);
+    },
+    "override attribute":function(){
+    	var root = new DOMParser().parseFromString("<xml xmlns:a='a' xmlns:b='b' xmlns='e'><child/></xml>",'text/xml').documentElement;
+    	root.setAttributeNS('a','a:a','1');
+    	console.assert(root.attributes.length == 4,root.attributes.length);
+//not standart
+//    	root.firstChild.setAttributeNode(root.attributes[0]);
+//    	console.assert(root.attributes.length == 0);
+    },
+    "attribute namespace":function(){
+    	var root = new DOMParser().parseFromString("<xml xmlns:a='a' xmlns:b='b' a:b='e'></xml>",'text/xml').documentElement;
+    	console.assert(root.getAttributeNS("a", "b"), "e");
+    },
+    "override ns attribute":function(){
+    	
+    },
+    "set existed attribute":function(){
+    	
+    },
+    "set document existed attribute":function(){
+    	
+    }
+}).run(); // Run it
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/clone.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/clone.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/clone.js
new file mode 100644
index 0000000..d8dff68
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/clone.js
@@ -0,0 +1,22 @@
+var wows = require('vows');
+var XMLSerializer = require('xmldom').XMLSerializer;
+var DOMParser = require('xmldom').DOMParser;
+
+// Create a Test Suite
+wows.describe('XML Namespace Parse').addBatch({
+    'clone': function () { 
+		var doc1 = new DOMParser().parseFromString("<doc1 attr1='1' attr2='a2'>text1<child>text2</child></doc1>",'text/xml')
+		var n =doc1.cloneNode(true)
+		console.assert(n == new XMLSerializer().serializeToString(doc1))
+    },
+    'import': function () { 
+		var doc1 = new DOMParser().parseFromString("<doc2 attr='2'/>")
+		var doc2 = new DOMParser().parseFromString("<doc1 attr1='1' attr2='a2'>text1<child>text2</child></doc1>",'text/xml')
+		
+		var doc3 = new DOMParser().parseFromString("<doc2 attr='2'><doc1 attr1='1' attr2='a2'>text1<child>text2</child></doc1></doc2>")
+		var n =doc1.importNode(doc2.documentElement, true)
+		doc1.documentElement.appendChild(n)
+		console.assert(doc1 == doc3+'')
+		console.assert(doc2 != doc3+'')
+    }
+}).run(); // Run it
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/element.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/element.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/element.js
new file mode 100644
index 0000000..72a4efe
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/element.js
@@ -0,0 +1,139 @@
+var wows = require('vows');
+var DOMParser = require('xmldom').DOMParser;
+var XMLSerializer = require('xmldom').XMLSerializer;
+// Create a Test Suite
+wows.describe('XML Namespace Parse').addBatch({
+    // See: http://jsfiddle.net/bigeasy/ShcXP/1/
+    "Document_getElementsByTagName":function () {
+    	var doc = new DOMParser().parseFromString('<a><b/></a>');
+    	console.assert(doc.getElementsByTagName('*').length == 2);
+    	console.assert(doc.documentElement.getElementsByTagName('*').length == 1);
+    },
+    'getElementsByTagName': function () { 
+    	
+
+       var doc = new DOMParser().parseFromString('<xml xmlns="http://test.com" xmlns:t="http://test.com" xmlns:t2="http://test2.com">' +
+       		'<t:test/><test/><t2:test/>'+
+       		'<child attr="1"><test><child attr="2"/></test></child>' +
+       		'<child attr="3"/></xml>','text/xml');
+       var childs = doc.documentElement.getElementsByTagName('child');
+       console.assert(childs.item(0).getAttribute('attr')=="1",childs.item(0)+'');
+       console.assert(childs.item(1).getAttribute('attr')=="2",childs.item(1)+'');
+       console.assert(childs.item(2).getAttribute('attr')=="3",childs.item(2)+'');
+       console.assert(childs.length==3,3,childs.length);
+       
+       var childs = doc.getElementsByTagName('child');
+       console.assert(childs.item(0).getAttribute('attr')=="1",childs.item(0)+'');
+       console.assert(childs.item(1).getAttribute('attr')=="2",childs.item(1)+'');
+       console.assert(childs.item(2).getAttribute('attr')=="3",childs.item(2)+'');
+       console.assert(childs.length==3,3,childs.length);
+       
+       
+       
+       
+       
+       var childs = doc.documentElement.getElementsByTagName('*');
+       for(var i=0,buf = [];i<childs.length;i++){
+       	buf.push(childs[i].tagName)
+       }
+       console.assert(childs.length==7,childs.length,buf);
+       
+       
+       
+       
+		var feed = new DOMParser().parseFromString('<feed><entry>foo</entry></feed>');
+		var entries = feed.documentElement.getElementsByTagName('entry');
+		console.log(entries[0].nodeName);
+       console.log(feed.documentElement.childNodes.item(0).nodeName);
+    },
+    'getElementsByTagNameNS': function () { 
+       var doc = new DOMParser().parseFromString('<xml xmlns="http://test.com" xmlns:t="http://test.com" xmlns:t2="http://test2.com">' +
+       		'<t:test/><test/><t2:test/>'+
+       		'<child attr="1"><test><child attr="2"/></test></child>' +
+       		'<child attr="3"/></xml>','text/xml');
+       		
+       var childs = doc.documentElement.getElementsByTagNameNS("http://test.com",'*');
+       console.assert(childs.length==6,childs.length);
+       
+        var childs = doc.getElementsByTagNameNS("http://test.com",'*');
+       console.assert(childs.length==7,childs.length);
+       
+       
+       var childs = doc.documentElement.getElementsByTagNameNS("http://test.com",'test');
+       console.assert(childs.length==3,childs.length);
+       
+       var childs = doc.getElementsByTagNameNS("http://test.com",'test');
+       console.assert(childs.length==3,childs.length);
+       
+       
+       
+    },
+    'getElementById': function () { 
+       var doc = new DOMParser().parseFromString('<xml xmlns="http://test.com" id="root">' +
+       		'<child id="a1" title="1"><child id="a2"  title="2"/></child>' +
+       		'<child id="a1"   title="3"/></xml>','text/xml');
+       console.assert(doc.getElementById('root'))
+       console.assert(doc.getElementById('a1').getAttribute('title')=="1",doc.getElementById('a1'));
+       console.assert(doc.getElementById('a2').getAttribute('title')=="2",doc.getElementById('a2'));
+       console.assert(doc.getElementById('a2').getAttribute('title2')=="",doc.getElementById('a2'));
+    },
+    "append exist child":function(){
+       var doc = new DOMParser().parseFromString('<xml xmlns="http://test.com" id="root">' +
+       		'<child1 id="a1" title="1"><child11 id="a2"  title="2"/></child1>' +
+       		'<child2 id="a1"   title="3"/><child3 id="a1"   title="3"/></xml>','text/xml');
+       	
+       	var doc1 = doc;
+       	var str1=new XMLSerializer().serializeToString(doc);
+       	var doc2 = doc1.cloneNode(true);
+       	var doc3 = doc1.cloneNode(true);
+       	var doc4 = doc1.cloneNode(true);
+       	
+       	doc3.documentElement.appendChild(doc3.documentElement.lastChild);
+       	doc4.documentElement.appendChild(doc4.documentElement.firstChild);
+       	
+       	var str2=new XMLSerializer().serializeToString(doc2);
+       	var str3=new XMLSerializer().serializeToString(doc3);
+       	var str4=new XMLSerializer().serializeToString(doc4);
+       	console.assert(str1 == str2 && str2 == str3,str3,str1);
+       	console.assert(str3 != str4 && str3.length == str4.length,str3);
+       	
+    },
+    "append exist other child":function(){
+    	var doc = new DOMParser().parseFromString('<xml xmlns="http://test.com" id="root">' +
+       		'<child1 id="a1" title="1"><child11 id="a2"  title="2"><child/></child11></child1>' +
+       		'<child2 id="a1"   title="3"/><child3 id="a1"   title="3"/></xml>','text/xml');
+       	
+       	var doc1 = doc;
+       	var str1=new XMLSerializer().serializeToString(doc);
+       	var doc2 = doc1.cloneNode(true);
+       	
+       	console.assert(doc2.documentElement.lastChild.childNodes.length == 0);
+       	doc2.documentElement.appendChild(doc2.documentElement.firstChild.firstChild);
+       	
+       	var str2=new XMLSerializer().serializeToString(doc2);
+       	
+       	console.assert(doc2.documentElement.lastChild.childNodes.length == 1);
+       	console.assert(str1 != str2 && str1.length != str2.length,str3);
+       	var doc3 = new DOMParser().parseFromString(str2,'text/xml');
+       	doc3.documentElement.firstChild.appendChild(doc3.documentElement.lastChild);
+       	var str3 = new XMLSerializer().serializeToString(doc3);
+       	console.assert(str1 == str3);
+    },
+    "set textContent":function() {
+        var doc = new DOMParser().parseFromString('<test><a/><b><c/></b></test>');
+        var a = doc.documentElement.firstChild;
+        var b = a.nextSibling;
+        a.textContent = 'hello';
+        console.assert(doc.documentElement.toString() == '<test><a>hello</a><b><c/></b></test>');
+        b.textContent = 'there';
+        console.assert(doc.documentElement.toString() == '<test><a>hello</a><b>there</b></test>');
+        b.textContent = '';
+        console.assert(doc.documentElement.toString() == '<test><a>hello</a><b/></test>');
+        doc.documentElement.textContent = 'bye';
+        console.assert(doc.documentElement.toString() == '<test>bye</test>');
+    },
+    "nested append failed":function(){
+    },
+    "self append failed":function(){
+    }
+}).run(); // Run it

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/fragment.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/fragment.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/fragment.js
new file mode 100644
index 0000000..3f72824
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/fragment.js
@@ -0,0 +1,15 @@
+var wows = require('vows');
+var DOMParser = require('xmldom').DOMParser;
+var XMLSerializer = require('xmldom').XMLSerializer;
+
+wows.describe('DOM DocumentFragment').addBatch({
+	// see: http://jsfiddle.net/9Wmh2/1/
+	"append empty fragment":function(){
+		var document = new DOMParser().parseFromString('<p id="p"/>');
+		var fragment = document.createDocumentFragment();
+		document.getElementById("p").insertBefore(fragment, null);
+		fragment.appendChild(document.createTextNode("a"));
+		document.getElementById("p").insertBefore(fragment, null);
+		console.assert(document.toString() == '<p id="p">a</p>', document.toString());
+	},
+}).run();

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/index.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/index.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/index.js
new file mode 100644
index 0000000..201a0b0
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/index.js
@@ -0,0 +1,5 @@
+require('./element');
+require('./level3');
+require('./clone');
+require('./attr');
+require('./serializer');

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/level3.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/level3.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/level3.js
new file mode 100644
index 0000000..b3810e2
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/level3.js
@@ -0,0 +1,8 @@
+var wows = require('vows');
+var DOMParser = require('xmldom').DOMParser;
+
+// Create a Test Suite
+wows.describe('XML Namespace Parse').addBatch({
+	"test":function(){}
+    //see namespace.js
+}).run(); // Run it
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/serializer.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/serializer.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/serializer.js
new file mode 100644
index 0000000..73d86ad
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/dom/serializer.js
@@ -0,0 +1,14 @@
+var wows = require('vows');
+var DOMParser = require('xmldom').DOMParser;
+
+wows.describe('XML Serializer').addBatch({
+  'text node containing "]]>"': function() {
+    var doc = new DOMParser().parseFromString('<test/>', 'text/xml');
+    doc.documentElement.appendChild(doc.createTextNode('hello ]]> there'));
+    console.assert(doc.documentElement.firstChild.toString() == 'hello ]]> there',doc.documentElement.firstChild.toString());
+  },
+  '<script> element with no children': function() {
+    var doc = new DOMParser().parseFromString('<html><script></script></html>', 'text/html');
+    console.assert(doc.documentElement.firstChild.toString() == '<script></script>');
+  },
+}).run();

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/error.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/error.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/error.js
new file mode 100644
index 0000000..ec15a45
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/error.js
@@ -0,0 +1,71 @@
+var wows = require('vows');
+var DOMParser = require('xmldom').DOMParser;
+
+
+wows.describe('errorHandle').addBatch({
+  'only function two args': function() {
+  	var error = {}
+    var parser = new DOMParser({
+    	errorHandler:function(key,msg){error[key] = msg}
+	});
+	try{
+    	var doc = parser.parseFromString('<html disabled><1 1="2"/></body></html>', 'text/xml');
+		console.assert(error.warning!=null ,'error.error:'+error.warning);
+		console.assert(error.error!=null ,'error.error:'+error.error);
+		console.assert(error.fatalError!=null ,'error.error:'+error.fatalError);
+		//console.log(doc+'')
+	}catch(e){
+	}
+  },
+  'only function': function() {
+  	var error = []
+    var parser = new DOMParser({
+    	errorHandler:function(msg){error.push(msg)}
+	});
+	try{
+    	var doc = parser.parseFromString('<html disabled><1 1="2"/></body></html>', 'text/xml');
+    	error.map(function(e){error[e.replace(/\:[\s\S]*/,'')]=e})
+		console.assert(error.warning!=null ,'error.error:'+error.warning);
+		console.assert(error.error!=null ,'error.error:'+error.error);
+		console.assert(error.fatalError!=null ,'error.error:'+error.fatalError);
+		//console.log(doc+'')
+	}catch(e){
+	}
+  },
+  'only function': function() {
+  	var error = []
+  	var errorMap = []
+    new DOMParser({
+    	errorHandler:function(msg){error.push(msg)}
+	}).parseFromString('<html><body title="1<2">test</body></html>', 'text/xml');
+    'warn,warning,error,fatalError'.replace(/\w+/g,function(k){
+    	var errorHandler = {};
+    	errorMap[k] = [];
+    	errorHandler[k] = function(msg){errorMap[k] .push(msg)}
+	    new DOMParser({errorHandler:errorHandler}).parseFromString('<html><body title="1<2">test</body></html>', 'text/xml');
+    });
+    for(var n in errorMap){
+    	console.assert(error.length == errorMap[n].length)
+    }
+  },
+  'error function': function() {
+  	var error = []
+    var parser = new DOMParser({
+    	locator:{},
+    	errorHandler:{
+			error:function(msg){
+				error.push(msg);
+				throw new Error(msg)
+			}
+		}
+	});
+	try{
+    	var doc = parser.parseFromString('<html><body title="1<2"><table>&lt;;test</body></body></html>', 'text/html');
+	}catch(e){
+		console.log(e);
+		console.assert(/\n@#\[line\:\d+,col\:\d+\]/.test(error.join(' ')),'line,col must record:'+error)
+		return;
+	}
+	console.assert(false,doc+' should be null');
+  }
+}).run();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/html/normalize.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/html/normalize.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/html/normalize.js
new file mode 100644
index 0000000..b855bad
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/html/normalize.js
@@ -0,0 +1,89 @@
+var wows = require('vows');
+var assert = require('assert');
+var DOMParser = require('xmldom').DOMParser;
+var XMLSerializer = require('xmldom').XMLSerializer;
+var parser = new DOMParser();
+// Create a Test Suite
+wows.describe('html normalizer').addBatch({
+    'text & <': function () { 
+    	var dom = new DOMParser().parseFromString('<div>&amp;&lt;123&456<789;&&</div>','text/html');
+    	console.assert(dom == '<div>&amp;&lt;123&amp;456&lt;789;&amp;&amp;</div>',dom+'')
+    	
+    	var dom = new DOMParser().parseFromString('<div><123e>&<a<br/></div>','text/html');
+    	console.assert(dom == '<div>&lt;123e>&amp;&lt;a<br/></div>',dom+'')
+    	
+    	var dom = new DOMParser().parseFromString('<div>&nbsp;&copy;&nbsp&copy</div>','text/html');
+    	console.assert(dom == '<div>\u00a0\u00a9&amp;nbsp&amp;copy</div>',dom+'')
+    	
+    	
+    	var dom = new DOMParser().parseFromString('<html xmlns:x="1"><body/></html>','text/html');
+    	console.assert(dom == '<html xmlns:x="1"><body></body></html>',dom+'')
+	},
+    'attr': function () { 
+    	var dom = new DOMParser().parseFromString('<html test="a<b && a>b && \'&amp;&&\'"/>','text/html');
+    	console.assert(dom == '<html test="a&lt;b &amp;&amp; a>b &amp;&amp; \'&amp;&amp;&amp;\'"></html>',dom+'')
+		
+		var dom = new DOMParser().parseFromString('<div test="alert(\'<br/>\')"/>','text/html');
+    	console.assert(dom == '<div test="alert(\'&lt;br/>\')"></div>',dom+'')
+    	var dom = new DOMParser().parseFromString('<div test="a<b&&a< c && a>d"></div>','text/html');
+    	console.assert(dom == '<div test="a&lt;b&amp;&amp;a&lt; c &amp;&amp; a>d"></div>',dom+'')
+    	
+    	var dom = new DOMParser().parseFromString('<div a=& bb c d=123&&456/>','text/html');
+    	console.assert(dom == '<div a="&amp;" bb="bb" c="c" d="123&amp;&amp;456"></div>',dom+'')
+    	
+    	var dom = new DOMParser().parseFromString('<div a=& a="&\'\'" b/>','text/html');
+    	console.assert(dom == '<div a="&amp;\'\'" b="b"></div>',dom+'')
+	},
+    'attrQute': function () { 
+    	var dom = new DOMParser().parseFromString('<html test="123"/>','text/html');
+    	console.assert(dom == '<html test="123"></html>',dom+'')
+    	
+//		var dom = new DOMParser().parseFromString('<r><Label onClick="doClick..>Hello, World</Label></r>','text/html');
+//    	console.assert(dom == '<r><Label onClick="doClick..">Hello, World</Label></r>',dom+'!!')
+//		
+		var dom = new DOMParser().parseFromString('<Label onClick=doClick..">Hello, World</Label>','text/html');
+    	console.assert(dom == '<Label onClick="doClick..">Hello, World</Label>',dom+'')
+	},
+	"unclosed":function(){
+    	var dom = new DOMParser().parseFromString('<html><meta><link><img><br><hr><input></html>','text/html');
+    	console.assert(dom == '<html><meta/><link/><img/><br/><hr/><input/></html>',dom+'')
+    	
+    	var dom = new DOMParser().parseFromString('<html title =1/2></html>','text/html');
+    	console.assert(dom == '<html title="1/2"></html>',dom+'')
+    	
+    	var dom = new DOMParser().parseFromString('<html title= 1/>','text/html');
+    	console.assert(dom == '<html title="1"></html>',dom+'')
+    	
+    	var dom = new DOMParser().parseFromString('<html title = 1/>','text/html');
+    	console.assert(dom == '<html title="1"></html>',dom+'')
+    	
+    	var dom = new DOMParser().parseFromString('<html title/>','text/html');
+    	console.assert(dom == '<html title="title"></html>',dom+'')
+    	
+    	
+    	
+    	var dom = new DOMParser().parseFromString('<html><meta><link><img><br><hr><input></html>','text/html');
+    	console.assert(dom == '<html><meta/><link/><img/><br/><hr/><input/></html>',dom+'')
+    	
+    	
+	},
+    'script': function () { 
+    	var dom = new DOMParser().parseFromString('<script>alert(a<b&&c?"<br>":">>");</script>','text/html');
+    	console.assert(dom == '<script>alert(a<b&&c?"<br>":">>");</script>',dom+'')
+    	
+    	var dom = new DOMParser().parseFromString('<script>alert(a<b&&c?"<br>":">>");</script>','text/xml');
+    	console.assert(dom == '<script>alert(a&lt;b&amp;&amp;c?"<br/>":">>");</script>',dom+'')
+    	
+    	var dom = new DOMParser().parseFromString('<script>alert(a<b&&c?"<br/>":">>");</script>','text/html');
+    	console.assert(dom == '<script>alert(a<b&&c?"<br/>":">>");</script>',dom+'')
+
+	},
+    'textarea': function () { 
+    	var dom = new DOMParser().parseFromString('<textarea>alert(a<b&&c?"<br>":">>");</textarea>','text/html');
+    	console.assert(dom == '<textarea>alert(a&lt;b&amp;&amp;c?"&lt;br>":">>");</textarea>',dom+'')
+    	
+    	
+    	var dom = new DOMParser().parseFromString('<textarea>alert(a<b&&c?"<br>":">>");</textarea>','text/xml');
+    	console.assert(dom == '<textarea>alert(a&lt;b&amp;&amp;c?"<br/>":">>");</textarea>',dom+'')
+	}
+}).run();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/index.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/index.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/index.js
new file mode 100644
index 0000000..4b7703f
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/index.js
@@ -0,0 +1,63 @@
+var XMLSerializer = require('xmldom').XMLSerializer;
+var DOMParser = require('xmldom').DOMParser;
+try{
+	var libxml = require('libxmljs');
+}catch(e){
+	var DomJS = require("dom-js");
+}
+
+var assert = require('assert');
+var oldParser = DOMParser.prototype.parseFromString ;
+function format(s){
+	if(libxml){
+		var result = libxml.parseXmlString(s).toString().replace(/^\s+|\s+$/g,'');
+		//console.log(result.charCodeAt().toString(16),result)
+	}else{
+		var domjs = new DomJS.DomJS();
+		domjs.parse(s, function(err, dom) {
+	  	  result = dom.toXml();
+		});
+	}
+	return result;
+}
+function check(data,doc){
+	var domjsresult = format(data);
+	var xmldomresult = new XMLSerializer().serializeToString(doc);
+	var xmldomresult2 = new XMLSerializer().serializeToString(doc.cloneNode(true));
+	assert.equal(xmldomresult,xmldomresult2);
+	xmldomresult = xmldomresult.replace(/^<\?.*?\?>\s*|<!\[CDATA\[\]\]>/g,'')
+	domjsresult = domjsresult.replace(/^<\?.*?\?>\s*|<!\[CDATA\[\]\]>/g,'')
+	//console.log('['+xmldomresult+'],['+domjsresult+']')
+	if(xmldomresult!=domjsresult){
+		assert.equal(format(xmldomresult),domjsresult);
+	}
+	
+}
+DOMParser.prototype.parseFromString = function(data,mimeType){
+	var doc = oldParser.apply(this,arguments);
+	function ck(){
+		if(!/\/x?html?\b/.test(mimeType)){
+			try{
+			check(data,doc);
+			}catch(e){console.dir(e)}
+		}
+	}
+	if(this.options.checkLater){
+	setTimeout(ck,1);
+	}else{ck()}
+	return doc;
+}
+function include(){
+	for(var i=0;i<arguments.length;i++){
+		var file = arguments[i]
+		console.log('test ',file);
+		require(file);
+	}
+}
+include('./dom','./parse-element','./node','./namespace','./html/normalize'
+		,'./error','./locator'
+		,'./big-file-performance'
+		)
+
+
+

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/locator.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/locator.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/locator.js
new file mode 100644
index 0000000..912520a
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/locator.js
@@ -0,0 +1,50 @@
+var wows = require('vows');
+var DOMParser = require('xmldom').DOMParser;
+
+function assertPosition(n, line, col) {
+  console.assert(n.lineNumber == line,'lineNumber:'+n.lineNumber+'/'+line);
+  console.assert(n.columnNumber == col,'columnNumber:'+n.columnNumber+'/'+col);
+}
+
+wows.describe('DOMLocator').addBatch({
+  'node positions': function() {
+    var parser = new DOMParser({locator:{}});
+    var doc = parser.parseFromString('<?xml version="1.0"?><!-- aaa -->\n<test>\n  <a attr="value"><![CDATA[1]]>something\n</a>x</test>', 'text/xml');
+    var test = doc.documentElement;
+    var a = test.firstChild.nextSibling;
+    assertPosition(doc.firstChild, 1, 1);
+    assertPosition(doc.firstChild.nextSibling, 1, 1+'<?xml version="1.0"?>'.length);
+    assertPosition(test, 2, 1);
+    //assertPosition(test.firstChild, 1, 7);
+    assertPosition(a, 3, 3);
+    assertPosition(a.firstChild, 3, 19);
+    assertPosition(a.firstChild.nextSibling, 3, 19+'<![CDATA[1]]>'.length);
+    assertPosition(test.lastChild, 4, 5);
+  },
+  'error positions':function(){
+  	var error = []
+    var parser = new DOMParser({
+    	locator:{systemId:'c:/test/1.xml'},
+    	errorHandler:function(msg){
+			error.push(msg);
+		}
+	});
+    var doc = parser.parseFromString('<html><body title="1<2"><table>&lt;;test</body></body></html>', 'text/html');
+	console.assert(/\n@c\:\/test\/1\.xml#\[line\:\d+,col\:\d+\]/.test(error.join(' ')),'line,col must record:'+error)
+  },
+  'error positions p':function(){
+  	var error = []
+    var parser = new DOMParser({
+    	locator:{},
+    	errorHandler:function(msg){
+			error.push(msg);
+		}
+	});
+    var doc = parser.parseFromString('<root>\n\t<err</root>', 'text/html');
+    var root = doc.documentElement;
+    var textNode = root.firstChild;
+	console.log(root+'/'+textNode)
+	console.assert(/\n@#\[line\:2,col\:2\]/.test(error.join(' ')),'line,col must record:'+error);
+	console.log(textNode.lineNumber+'/'+textNode.columnNumber)
+  }
+}).run();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/namespace.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/namespace.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/namespace.js
new file mode 100644
index 0000000..a06248c
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/namespace.js
@@ -0,0 +1,32 @@
+var wows = require('vows');
+var DOMParser = require('xmldom').DOMParser;
+
+// Create a Test Suite
+wows.describe('XML Namespace Parse').addBatch({
+    'default namespace': function () { 
+       var dom = new DOMParser().parseFromString('<xml xmlns="http://test.com"><child attr="1"/></xml>','text/xml');
+       var root = dom.documentElement;
+       console.assert(root.namespaceURI=='http://test.com')
+       console.assert(root.lookupNamespaceURI('') == 'http://test.com')
+       console.assert(root.firstChild.namespaceURI=='http://test.com')
+       console.assert(root.firstChild.lookupNamespaceURI('') == 'http://test.com')
+       console.assert(root.firstChild.getAttributeNode('attr').namespaceURI==null)
+    },
+    'prefix namespace': function () { 
+       var dom = new DOMParser().parseFromString('<xml xmlns:p1="http://p1.com" xmlns:p2="http://p2.com"><p1:child a="1" p1:attr="1" b="2"/><p2:child/></xml>','text/xml');
+       var root = dom.documentElement;
+       console.assert(root.firstChild.namespaceURI == 'http://p1.com')
+       console.assert(root.lookupNamespaceURI('p1') == 'http://p1.com')
+       console.assert(root.firstChild.getAttributeNode('attr') == null)
+       console.assert(root.firstChild.getAttributeNode('p1:attr').namespaceURI == 'http://p1.com')
+       console.assert(root.firstChild.nextSibling.namespaceURI == 'http://p2.com')
+       console.assert(root.firstChild.nextSibling.lookupNamespaceURI('p2') == 'http://p2.com')
+    },
+    'after prefix namespace': function () { 
+       var dom = new DOMParser().parseFromString('<xml xmlns:p="http://test.com"><p:child xmlns:p="http://p.com"/><p:child/></xml>','text/xml');
+       var root = dom.documentElement;
+       console.assert(root.firstChild.namespaceURI=='http://p.com')
+       console.assert(root.lastChild.namespaceURI=='http://test.com')
+       console.assert(root.firstChild.nextSibling.lookupNamespaceURI('p') == 'http://test.com')
+    }
+}).run(); // Run it
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/node.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/node.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/node.js
new file mode 100644
index 0000000..6527eee
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/node.js
@@ -0,0 +1,102 @@
+var wows = require('vows');
+var assert = require('assert');
+var DOMParser = require('xmldom').DOMParser;
+var XMLSerializer = require('xmldom').XMLSerializer;
+var parser = new DOMParser();
+// Create a Test Suite
+wows.describe('XML Node Parse').addBatch({
+    'element': function () { 
+    	var dom = new DOMParser().parseFromString('<xml><child/></xml>');
+    	console.assert (dom.childNodes.length== 1,dom.childNodes.length, 1);
+    	console.assert (dom.documentElement.childNodes.length== 1);
+    	console.assert (dom.documentElement.tagName== 'xml');
+    	console.assert (dom.documentElement.firstChild.tagName== 'child');
+    },
+    'text':function(){
+    	var dom = new DOMParser().parseFromString('<xml>start center end</xml>');
+    	var root = dom.documentElement;
+    	console.assert( root.firstChild.data =='start center end');
+    	console.assert( root.firstChild.nextSibling ==null);
+    },
+    'cdata': function () {
+    	var dom = new DOMParser().parseFromString('<xml>start <![CDATA[<encoded>]]> end<![CDATA[[[[[[[[[]]]]]]]]]]></xml>');
+    	var root = dom.documentElement;
+    	console.assert ( root.firstChild.data =='start ');
+    	console.assert ( root.firstChild.nextSibling.data =='<encoded>');
+    	console.assert ( root.firstChild.nextSibling.nextSibling.nextSibling.data =='[[[[[[[[]]]]]]]]');
+    },
+    'cdata empty': function () {
+    	var dom = new DOMParser().parseFromString('<xml><![CDATA[]]>start <![CDATA[]]> end</xml>');
+    	var root = dom.documentElement;
+    	console.assert ( root.textContent =='start  end');
+    },
+    'comment': function(){
+    	var dom = new DOMParser().parseFromString('<xml><!-- comment&>< --></xml>');
+    	var root = dom.documentElement;
+    	console.assert ( root.firstChild.nodeValue ==' comment&>< ');
+    },
+    'cdata comment': function(){
+    	var dom = new DOMParser().parseFromString('<xml>start <![CDATA[<encoded>]]> <!-- comment -->end</xml>');
+    	var root = dom.documentElement;
+    	console.assert ( root.firstChild.nodeValue =='start ');
+    	console.assert ( root.firstChild.nextSibling.nodeValue =='<encoded>');
+    	console.assert ( root.firstChild.nextSibling.nextSibling.nextSibling.nodeValue ==' comment ');
+    	console.assert ( root.firstChild.nextSibling.nextSibling.nextSibling.nextSibling.nodeValue =='end');
+    },
+    'append node': function () {
+    	var dom = new DOMParser().parseFromString('<xml/>');
+    	var child = dom.createElement("child");
+    	console.assert ( child == dom.documentElement.appendChild(child));
+    	console.assert ( child == dom.documentElement.firstChild);
+    	var fragment = new dom.createDocumentFragment();
+    	console.assert ( child == fragment.appendChild(child));
+    },
+    'insert node': function () {
+    	var dom = new DOMParser().parseFromString('<xml><child/></xml>');
+    	var node = dom.createElement("sibling");
+    	var child = dom.documentElement.firstChild;
+    	child.parentNode.insertBefore(node, child);
+    	console.assert ( node == child.previousSibling);
+    	console.assert ( node.nextSibling == child);
+    	console.assert ( node.parentNode == child.parentNode);
+    },
+    'insert fragment': function () {
+    	var dom = new DOMParser().parseFromString('<xml><child/></xml>');
+    	var fragment = dom.createDocumentFragment();
+    	assert(fragment.nodeType === 11);
+    	var first = fragment.appendChild(dom.createElement("first"));
+    	var last = fragment.appendChild(dom.createElement("last"));
+    	console.assert ( fragment.firstChild == first);
+    	console.assert ( fragment.lastChild == last);
+    	console.assert ( last.previousSibling == first);
+    	console.assert ( first.nextSibling == last);
+    	var child = dom.documentElement.firstChild;
+    	child.parentNode.insertBefore(fragment, child);
+    	console.assert ( last.previousSibling == first);
+    	console.assert ( first.nextSibling == last);
+    	console.assert ( child.parentNode.firstChild == first);
+    	console.assert ( last == child.previousSibling);
+    	console.assert ( last.nextSibling == child);
+    	console.assert ( first.parentNode == child.parentNode);
+    	console.assert ( last.parentNode == child.parentNode);
+    }
+}).addBatch({
+	"instruction":function(){
+		var source = '<?xml version="1.0"?><root><child>&amp;<!-- &amp; --></child></root>';
+		var doc = new DOMParser().parseFromString(source,"text/xml");
+    	var source2 = new XMLSerializer().serializeToString(doc);
+    	console.assert(source == source2,source2);
+	}
+}).run(); // Run it
+//var ELEMENT_NODE                = NodeType.ELEMENT_NODE                = 1;
+//var ATTRIBUTE_NODE              = NodeType.ATTRIBUTE_NODE              = 2;
+//var TEXT_NODE                   = NodeType.TEXT_NODE                   = 3;
+//var CDATA_SECTION_NODE          = NodeType.CDATA_SECTION_NODE          = 4;
+//var ENTITY_REFERENCE_NODE       = NodeType.ENTITY_REFERENCE_NODE       = 5;
+//var ENTITY_NODE                 = NodeType.ENTITY_NODE                 = 6;
+//var PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7;
+//var COMMENT_NODE                = NodeType.COMMENT_NODE                = 8;
+//var DOCUMENT_NODE               = NodeType.DOCUMENT_NODE               = 9;
+//var DOCUMENT_TYPE_NODE          = NodeType.DOCUMENT_TYPE_NODE          = 10;
+//var DOCUMENT_FRAGMENT_NODE      = NodeType.DOCUMENT_FRAGMENT_NODE      = 11;
+//var NOTATION_NODE               = NodeType.NOTATION_NODE               = 12;

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/parse-element.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/parse-element.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/parse-element.js
new file mode 100644
index 0000000..53b8395
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/parse-element.js
@@ -0,0 +1,31 @@
+var wows = require('vows');
+var assert = require('assert');
+var DOMParser = require('xmldom').DOMParser;
+var XMLSerializer = require('xmldom').XMLSerializer;
+var parser = new DOMParser();
+// Create a Test Suite
+wows.describe('XML Node Parse').addBatch({
+    'noAttribute': function () { 
+    	var dom = new DOMParser().parseFromString('<xml ></xml>','text/xml');
+    	var dom = new DOMParser().parseFromString('<xml></xml>','text/xml');
+    	var dom = new DOMParser().parseFromString('<xml />','text/xml');
+    	var dom = new DOMParser().parseFromString('<xml/>','text/xml');
+    	var dom = new DOMParser().parseFromString('<xml/>','text/xml');
+	},
+    'simpleAttribute': function () { 
+    	var dom = new DOMParser().parseFromString('<xml a="1" b="2"></xml>','text/xml');
+    	var dom = new DOMParser().parseFromString('<xml a="1" b="2" ></xml>','text/xml');
+    	var dom = new DOMParser().parseFromString('<xml a="1" b=\'\'></xml>','text/xml');
+    	var dom = new DOMParser().parseFromString('<xml a="1" b=\'\' ></xml>','text/xml');
+    	var dom = new DOMParser().parseFromString('<xml a="1" b="2/">','text/xml');
+    	var dom = new DOMParser().parseFromString('<xml a="1" b="2" />','text/xml');
+    	var dom = new DOMParser().parseFromString('<xml  a="1" b=\'\'/>','text/xml');
+    	var dom = new DOMParser().parseFromString('<xml  a="1" b=\'\' />','text/xml');
+	},
+    'nsAttribute': function () { 
+    	var dom = new DOMParser().parseFromString('<xml xmlns="1" xmlns:a="2" a:test="3"></xml>','text/xml');
+    	var dom = new DOMParser().parseFromString('<xml xmlns="1" xmlns:a="2" a:test="3" ></xml>','text/xml');
+     	var dom = new DOMParser().parseFromString('<xml xmlns="1" xmlns:a="2" a:test="3/">','text/xml');
+    	var dom = new DOMParser().parseFromString('<xml xmlns="1" xmlns:a="2" a:test="3" />','text/xml');
+	}
+}).run();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/simple.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/simple.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/simple.js
new file mode 100644
index 0000000..4a398be
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/simple.js
@@ -0,0 +1,11 @@
+var wows = require('vows');
+var DOMParser = require('xmldom').DOMParser;
+
+
+wows.describe('errorHandle').addBatch({
+  'simple': function() {
+    var parser = new DOMParser();
+	var doc = parser.parseFromString('<html><body title="1<2"></body></html>', 'text/html');
+	console.log(doc+'');
+  }
+}).run();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1139813c/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/test.js
----------------------------------------------------------------------
diff --git a/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/test.js b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/test.js
new file mode 100644
index 0000000..a8aa97f
--- /dev/null
+++ b/blackberry10/node_modules/plugman/node_modules/plist/node_modules/xmldom/test/test.js
@@ -0,0 +1,24 @@
+var wows = require('vows');
+var assert = require('assert');
+var DOMParser = require('xmldom').DOMParser;
+var XMLSerializer = require('xmldom').XMLSerializer;
+
+
+var doc = new DOMParser().parseFromString('<xml xmlns="http://test.com" id="root">' +
+	'<child1 id="a1" title="1"><child11 id="a2"  title="2"/></child1>' +
+	'<child2 id="a1"   title="3"/><child3 id="a1"   title="3"/></xml>','text/xml');
+
+var doc1 = doc;
+var str1=new XMLSerializer().serializeToString(doc);
+var doc2 = doc1.cloneNode(true);
+var doc3 = doc1.cloneNode(true);
+var doc4 = doc1.cloneNode(true);
+
+doc3.documentElement.appendChild(doc3.documentElement.lastChild);
+//doc4.documentElement.appendChild(doc4.documentElement.firstChild);
+
+var str2=new XMLSerializer().serializeToString(doc2);
+var str3=new XMLSerializer().serializeToString(doc3);
+var str4=new XMLSerializer().serializeToString(doc4);
+console.assert(str1 == str3,str3,str1);
+//console.assert(str3 != str4 && str3.length == str4.length,str3);