summaryrefslogtreecommitdiff
path: root/Library/Artifacts/de/dee80bf7e41e7e10e76ed54bc92fef9d
blob: 1d359b0b1c1ba054c5a9341b5c6cd47836ec7041 (plain)
ofshex dumpascii
0000 00 00 0f 81 00 00 83 08 00 00 00 15 00 00 10 00 00 00 00 00 32 30 31 39 2e 33 2e 36 66 31 00 fe ....................2019.3.6f1..
0020 ff ff ff 01 02 00 00 00 0b 04 00 00 00 ff ff 66 9a 86 21 eb 14 35 98 39 dd 34 1d 51 0e c1 f3 42 ...............f..!..5.9.4.Q...B
0040 00 00 00 ed 00 00 00 02 00 00 00 00 00 00 00 37 00 00 80 ff ff ff ff 00 00 00 00 00 80 00 00 00 ...............7................
0060 00 00 00 00 00 00 00 01 00 01 00 a6 03 00 80 b2 01 00 80 04 00 00 00 01 00 00 00 01 00 00 00 00 ................................
0080 00 00 00 00 00 00 00 01 00 01 00 0d 00 00 00 45 04 00 80 0c 00 00 00 02 00 00 00 01 00 00 00 00 ...............E................
00a0 00 00 00 00 00 00 00 01 00 02 00 de 00 00 80 23 00 00 00 04 00 00 00 03 00 00 00 01 00 80 00 00 ...............#................
00c0 00 00 00 00 00 00 00 01 00 02 00 2e 03 00 80 2c 00 00 00 08 00 00 00 04 00 00 00 01 00 80 00 00 ...............,................
00e0 00 00 00 00 00 00 00 01 00 01 00 35 00 00 00 61 04 00 80 0c 00 00 00 05 00 00 00 01 00 00 00 00 ...........5...a................
0100 00 00 00 00 00 00 00 01 00 02 00 de 00 00 80 23 00 00 00 04 00 00 00 06 00 00 00 01 00 80 00 00 ...............#................
0120 00 00 00 00 00 00 00 01 00 02 00 2e 03 00 80 2c 00 00 00 08 00 00 00 07 00 00 00 01 00 80 00 00 ...............,................
0140 00 00 00 00 00 00 00 01 00 01 00 86 02 00 80 72 04 00 80 0c 00 00 00 08 00 00 00 01 00 00 00 00 ...............r................
0160 00 00 00 00 00 00 00 01 00 02 00 de 00 00 80 23 00 00 00 04 00 00 00 09 00 00 00 01 00 80 00 00 ...............#................
0180 00 00 00 00 00 00 00 01 00 02 00 2e 03 00 80 2c 00 00 00 08 00 00 00 0a 00 00 00 01 00 80 00 00 ...............,................
01a0 00 00 00 00 00 00 00 01 00 01 00 48 03 00 80 ab 01 00 80 ff ff ff ff 0b 00 00 00 01 80 08 00 00 ...........H....................
01c0 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 00 00 80 ff ff ff ff 0c 00 00 00 01 40 08 00 00 ...........1...1............@...
01e0 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b 03 00 80 04 00 00 00 0d 00 00 00 01 00 08 00 00 ................................
0200 00 00 00 00 00 00 00 01 00 03 00 51 00 00 80 6a 00 00 80 01 00 00 00 0e 00 00 00 01 00 08 00 00 ...........Q...j................
0220 00 00 00 00 00 00 00 01 00 01 00 f1 00 00 80 4a 00 00 00 ff ff ff ff 0f 00 00 00 00 c0 00 00 00 ...............J................
0240 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 00 00 80 ff ff ff ff 10 00 00 00 00 80 00 00 00 ...........1...1................
0260 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b 03 00 80 04 00 00 00 11 00 00 00 00 00 00 00 00 ................................
0280 00 00 00 00 00 00 00 01 00 03 00 1f 02 00 80 6a 00 00 80 ff ff ff ff 12 00 00 00 00 80 00 00 00 ...............j................
02a0 00 00 00 00 00 00 00 01 00 04 00 5c 00 00 00 9b 00 00 80 ff ff ff ff 13 00 00 00 00 80 00 00 00 ...........\....................
02c0 00 00 00 00 00 00 00 01 00 05 00 48 03 00 80 72 00 00 00 ff ff ff ff 14 00 00 00 00 80 00 00 00 ...........H...r................
02e0 00 00 00 00 00 00 00 01 00 06 01 31 00 00 80 31 00 00 80 ff ff ff ff 15 00 00 00 01 40 00 00 00 ...........1...1............@...
0300 00 00 00 00 00 00 00 01 00 07 00 de 00 00 80 1b 03 00 80 04 00 00 00 16 00 00 00 01 00 00 00 00 ................................
0320 00 00 00 00 00 00 00 01 00 07 00 51 00 00 80 6a 00 00 80 01 00 00 00 17 00 00 00 01 00 00 00 00 ...........Q...j................
0340 00 00 00 00 00 00 00 01 00 05 00 48 03 00 80 77 00 00 00 ff ff ff ff 18 00 00 00 00 80 00 00 00 ...........H...w................
0360 00 00 00 00 00 00 00 01 00 06 01 31 00 00 80 31 00 00 80 ff ff ff ff 19 00 00 00 01 40 00 00 00 ...........1...1............@...
0380 00 00 00 00 00 00 00 01 00 07 00 de 00 00 80 1b 03 00 80 04 00 00 00 1a 00 00 00 01 00 00 00 00 ................................
03a0 00 00 00 00 00 00 00 01 00 07 00 51 00 00 80 6a 00 00 80 01 00 00 00 1b 00 00 00 01 00 00 00 00 ...........Q...j................
03c0 00 00 00 00 00 00 00 01 00 05 00 48 03 00 80 80 00 00 00 ff ff ff ff 1c 00 00 00 00 80 00 00 00 ...........H....................
03e0 00 00 00 00 00 00 00 01 00 06 01 31 00 00 80 31 00 00 80 ff ff ff ff 1d 00 00 00 01 40 00 00 00 ...........1...1............@...
0400 00 00 00 00 00 00 00 01 00 07 00 de 00 00 80 1b 03 00 80 04 00 00 00 1e 00 00 00 01 00 00 00 00 ................................
0420 00 00 00 00 00 00 00 01 00 07 00 51 00 00 80 6a 00 00 80 01 00 00 00 1f 00 00 00 01 00 00 00 00 ...........Q...j................
0440 00 00 00 00 00 00 00 01 00 04 00 79 02 00 80 0a 03 00 80 0c 00 00 00 20 00 00 00 00 00 00 00 00 ...........y....................
0460 00 00 00 00 00 00 00 01 00 05 00 de 00 00 80 23 00 00 00 04 00 00 00 21 00 00 00 01 00 80 00 00 ...............#.......!........
0480 00 00 00 00 00 00 00 01 00 05 00 2e 03 00 80 2c 00 00 00 08 00 00 00 22 00 00 00 01 00 80 00 00 ...............,......."........
04a0 00 00 00 00 00 00 00 01 00 01 00 11 03 00 80 85 00 00 00 ff ff ff ff 23 00 00 00 01 40 08 00 00 .......................#....@...
04c0 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 00 00 80 ff ff ff ff 24 00 00 00 01 00 08 00 00 ...........1...1.......$........
04e0 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b 03 00 80 04 00 00 00 25 00 00 00 01 00 08 00 00 .......................%........
0500 00 00 00 00 00 00 00 01 00 03 00 2e 03 00 80 6a 00 00 80 08 00 00 00 26 00 00 00 01 00 08 00 00 ...............j.......&........
0520 00 00 00 00 00 00 00 01 00 01 00 d5 03 00 80 93 00 00 00 ff ff ff ff 27 00 00 00 00 80 00 00 00 .......................'........
0540 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 00 00 80 ff ff ff ff 28 00 00 00 00 c0 00 00 00 ...........1...1.......(........
0560 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b 03 00 80 04 00 00 00 29 00 00 00 00 00 00 00 00 .......................)........
0580 00 00 00 00 00 00 00 01 00 03 00 1f 02 00 80 6a 00 00 80 ff ff ff ff 2a 00 00 00 00 80 00 00 00 ...............j.......*........
05a0 00 00 00 00 00 00 00 01 00 04 00 48 03 00 80 9b 00 00 80 ff ff ff ff 2b 00 00 00 00 80 00 00 00 ...........H...........+........
05c0 00 00 00 00 00 00 00 01 00 05 01 31 00 00 80 31 00 00 80 ff ff ff ff 2c 00 00 00 01 40 00 00 00 ...........1...1.......,....@...
05e0 00 00 00 00 00 00 00 01 00 06 00 de 00 00 80 1b 03 00 80 04 00 00 00 2d 00 00 00 01 00 00 00 00 .......................-........
0600 00 00 00 00 00 00 00 01 00 06 00 51 00 00 80 6a 00 00 80 01 00 00 00 2e 00 00 00 01 00 00 00 00 ...........Q...j................
0620 00 00 00 00 00 00 00 01 00 04 00 79 02 00 80 0a 03 00 80 0c 00 00 00 2f 00 00 00 00 00 00 00 00 ...........y.........../........
0640 00 00 00 00 00 00 00 01 00 05 00 de 00 00 80 23 00 00 00 04 00 00 00 30 00 00 00 01 00 80 00 00 ...............#.......0........
0660 00 00 00 00 00 00 00 01 00 05 00 2e 03 00 80 2c 00 00 00 08 00 00 00 31 00 00 00 01 00 80 00 00 ...............,.......1........
0680 00 00 00 00 00 00 00 01 00 01 00 20 03 00 80 a7 00 00 00 02 00 00 00 32 00 00 00 00 40 00 00 00 .......................2....@...
06a0 00 00 00 00 00 00 00 01 00 01 00 be 02 00 80 b6 00 00 00 0c 00 00 00 33 00 00 00 00 40 00 00 00 .......................3....@...
06c0 00 00 00 00 00 00 00 01 00 02 00 de 00 00 80 23 00 00 00 04 00 00 00 34 00 00 00 01 00 80 00 00 ...............#.......4........
06e0 00 00 00 00 00 00 00 01 00 02 00 2e 03 00 80 2c 00 00 00 08 00 00 00 35 00 00 00 01 00 80 00 00 ...............,.......5........
0700 00 00 00 00 00 00 00 01 00 01 00 48 03 00 80 bb 00 00 00 ff ff ff ff 36 00 00 00 01 80 00 00 00 ...........H...........6........
0720 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 00 00 80 ff ff ff ff 37 00 00 00 01 40 00 00 00 ...........1...1.......7....@...
0740 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b 03 00 80 04 00 00 00 38 00 00 00 01 00 00 00 00 .......................8........
0760 00 00 00 00 00 00 00 01 00 03 00 51 00 00 80 6a 00 00 80 01 00 00 00 39 00 00 00 01 00 00 00 00 ...........Q...j.......9........
0780 00 00 00 00 00 00 00 01 00 01 00 48 03 00 80 c6 00 00 00 ff ff ff ff 3a 00 00 00 01 80 00 00 00 ...........H...........:........
07a0 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 00 00 80 ff ff ff ff 3b 00 00 00 01 40 00 00 00 ...........1...1.......;....@...
07c0 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b 03 00 80 04 00 00 00 3c 00 00 00 01 00 00 00 00 .......................<........
07e0 00 00 00 00 00 00 00 01 00 03 00 51 00 00 80 6a 00 00 80 01 00 00 00 3d 00 00 00 01 00 00 00 00 ...........Q...j.......=........
0800 00 00 00 00 00 00 00 01 00 01 00 48 03 00 80 d8 00 00 00 ff ff ff ff 3e 00 00 00 01 80 00 00 00 ...........H...........>........
0820 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 00 00 80 ff ff ff ff 3f 00 00 00 01 40 00 00 00 ...........1...1.......?....@...
0840 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b 03 00 80 04 00 00 00 40 00 00 00 01 00 00 00 00 .......................@........
0860 00 00 00 00 00 00 00 01 00 03 00 51 00 00 80 6a 00 00 80 01 00 00 00 41 00 00 00 01 00 00 00 00 ...........Q...j.......A........
0880 00 00 00 00 00 00 00 4d 6f 6e 6f 49 6d 70 6f 72 74 65 72 00 50 50 74 72 3c 45 64 69 74 6f 72 45 .......MonoImporter.PPtr<EditorE
08a0 78 74 65 6e 73 69 6f 6e 3e 00 6d 5f 46 69 6c 65 49 44 00 6d 5f 50 61 74 68 49 44 00 50 50 74 72 xtension>.m_FileID.m_PathID.PPtr
08c0 3c 50 72 65 66 61 62 49 6e 73 74 61 6e 63 65 3e 00 6d 5f 45 78 74 65 72 6e 61 6c 4f 62 6a 65 63 <PrefabInstance>.m_ExternalObjec
08e0 74 73 00 53 6f 75 72 63 65 41 73 73 65 74 49 64 65 6e 74 69 66 69 65 72 00 74 79 70 65 00 61 73 ts.SourceAssetIdentifier.type.as
0900 73 65 6d 62 6c 79 00 6e 61 6d 65 00 6d 5f 55 73 65 64 46 69 6c 65 49 44 73 00 6d 5f 44 65 66 61 sembly.name.m_UsedFileIDs.m_Defa
0920 75 6c 74 52 65 66 65 72 65 6e 63 65 73 00 65 78 65 63 75 74 69 6f 6e 4f 72 64 65 72 00 69 63 6f ultReferences.executionOrder.ico
0940 6e 00 6d 5f 55 73 65 72 44 61 74 61 00 6d 5f 41 73 73 65 74 42 75 6e 64 6c 65 4e 61 6d 65 00 6d n.m_UserData.m_AssetBundleName.m
0960 5f 41 73 73 65 74 42 75 6e 64 6c 65 56 61 72 69 61 6e 74 00 00 00 00 00 73 00 00 00 00 ff ff a3 _AssetBundleVariant.....s.......
0980 47 f1 d7 dc 8f 5a 35 36 a0 3a 21 40 69 c1 4a 2a 00 00 00 81 00 00 00 05 00 00 00 15 01 00 80 37 G....Z56.:!@i.J*...............7
09a0 00 00 80 ff ff ff ff 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 01 00 01 00 a6 03 00 80 b2 ................................
09c0 01 00 80 04 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 01 00 00 00 00 00 45 ...............................E
09e0 04 00 80 0c 00 00 00 02 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 de 00 00 80 16 ................................
0a00 00 00 00 04 00 00 00 03 00 00 00 01 00 80 00 00 00 00 00 00 00 00 00 01 00 02 00 2e 03 00 80 1f ................................
0a20 00 00 00 08 00 00 00 04 00 00 00 01 00 80 00 00 00 00 00 00 00 00 00 01 00 01 00 28 00 00 00 61 ...........................(...a
0a40 04 00 80 0c 00 00 00 05 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 de 00 00 80 16 ................................
0a60 00 00 00 04 00 00 00 06 00 00 00 01 00 80 00 00 00 00 00 00 00 00 00 01 00 02 00 2e 03 00 80 1f ................................
0a80 00 00 00 08 00 00 00 07 00 00 00 01 00 80 00 00 00 00 00 00 00 00 00 01 00 01 00 86 02 00 80 72 ...............................r
0aa0 04 00 80 0c 00 00 00 08 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 de 00 00 80 16 ................................
0ac0 00 00 00 04 00 00 00 09 00 00 00 01 00 80 00 00 00 00 00 00 00 00 00 01 00 02 00 2e 03 00 80 1f ................................
0ae0 00 00 00 08 00 00 00 0a 00 00 00 01 00 80 00 00 00 00 00 00 00 00 00 01 00 01 00 48 03 00 80 ab ...........................H....
0b00 01 00 80 ff ff ff ff 0b 00 00 00 01 80 08 00 00 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 ...........................1...1
0b20 00 00 80 ff ff ff ff 0c 00 00 00 01 40 08 00 00 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b ............@...................
0b40 03 00 80 04 00 00 00 0d 00 00 00 01 00 08 00 00 00 00 00 00 00 00 00 01 00 03 00 51 00 00 80 6a ...........................Q...j
0b60 00 00 80 01 00 00 00 0e 00 00 00 01 00 08 00 00 00 00 00 00 00 00 00 01 00 01 00 48 03 00 80 ea ...........................H....
0b80 01 00 80 ff ff ff ff 0f 00 00 00 01 80 00 00 00 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 ...........................1...1
0ba0 00 00 80 ff ff ff ff 10 00 00 00 01 40 00 00 00 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b ............@...................
0bc0 03 00 80 04 00 00 00 11 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 03 00 51 00 00 80 6a ...........................Q...j
0be0 00 00 80 01 00 00 00 12 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 01 00 f1 00 00 80 3d ...............................=
0c00 00 00 00 ff ff ff ff 13 00 00 00 01 80 00 00 00 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 ...........................1...1
0c20 00 00 80 ff ff ff ff 14 00 00 00 01 80 00 00 00 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b ................................
0c40 03 00 80 04 00 00 00 15 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 03 00 1f 02 00 80 6a ...............................j
0c60 00 00 80 ff ff ff ff 16 00 00 00 01 80 00 00 00 00 00 00 00 00 00 00 01 00 04 00 48 03 00 80 9b ...........................H....
0c80 00 00 80 ff ff ff ff 17 00 00 00 01 80 00 00 00 00 00 00 00 00 00 00 01 00 05 01 31 00 00 80 31 ...........................1...1
0ca0 00 00 80 ff ff ff ff 18 00 00 00 01 40 00 00 00 00 00 00 00 00 00 00 01 00 06 00 de 00 00 80 1b ............@...................
0cc0 03 00 80 04 00 00 00 19 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 06 00 51 00 00 80 6a ...........................Q...j
0ce0 00 00 80 01 00 00 00 1a 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 04 00 79 02 00 80 0a ...........................y....
0d00 03 00 80 0c 00 00 00 1b 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 05 00 de 00 00 80 16 ................................
0d20 00 00 00 04 00 00 00 1c 00 00 00 01 00 80 00 00 00 00 00 00 00 00 00 01 00 05 00 2e 03 00 80 1f ................................
0d40 00 00 00 08 00 00 00 1d 00 00 00 01 00 80 00 00 00 00 00 00 00 00 00 01 00 01 00 79 02 00 80 51 ...........................y...Q
0d60 00 00 00 0c 00 00 00 1e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 de 00 00 80 16 ................................
0d80 00 00 00 04 00 00 00 1f 00 00 00 01 00 80 00 00 00 00 00 00 00 00 00 01 00 02 00 2e 03 00 80 1f ................................
0da0 00 00 00 08 00 00 00 20 00 00 00 01 00 80 00 00 00 00 00 00 00 00 00 01 00 01 00 de 00 00 80 58 ...............................X
0dc0 00 00 00 04 00 00 00 21 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 01 00 01 00 48 03 00 80 69 .......!...................H...i
0de0 00 00 00 ff ff ff ff 22 00 00 00 10 80 00 00 00 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 ......."...................1...1
0e00 00 00 80 ff ff ff ff 23 00 00 00 11 40 00 00 00 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b .......#....@...................
0e20 03 00 80 04 00 00 00 24 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 01 00 03 00 51 00 00 80 6a .......$...................Q...j
0e40 00 00 80 01 00 00 00 25 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 01 00 01 00 48 03 00 80 75 .......%...................H...u
0e60 00 00 00 ff ff ff ff 26 00 00 00 10 80 00 00 00 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 .......&...................1...1
0e80 00 00 80 ff ff ff ff 27 00 00 00 11 40 00 00 00 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b .......'....@...................
0ea0 03 00 80 04 00 00 00 28 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 01 00 03 00 51 00 00 80 6a .......(...................Q...j
0ec0 00 00 80 01 00 00 00 29 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 50 50 74 72 3c 45 64 69 74 .......)...............PPtr<Edit
0ee0 6f 72 45 78 74 65 6e 73 69 6f 6e 3e 00 6d 5f 46 69 6c 65 49 44 00 6d 5f 50 61 74 68 49 44 00 50 orExtension>.m_FileID.m_PathID.P
0f00 50 74 72 3c 50 72 65 66 61 62 49 6e 73 74 61 6e 63 65 3e 00 6d 5f 44 65 66 61 75 6c 74 52 65 66 Ptr<PrefabInstance>.m_DefaultRef
0f20 65 72 65 6e 63 65 73 00 6d 5f 49 63 6f 6e 00 6d 5f 45 78 65 63 75 74 69 6f 6e 4f 72 64 65 72 00 erences.m_Icon.m_ExecutionOrder.
0f40 6d 5f 43 6c 61 73 73 4e 61 6d 65 00 6d 5f 4e 61 6d 65 73 70 61 63 65 00 00 00 00 00 02 00 00 00 m_ClassName.m_Namespace.........
0f60 03 00 00 00 00 00 00 00 00 00 00 00 5c 00 00 00 00 00 00 00 e0 79 af 00 00 00 00 00 60 00 00 00 ............\........y......`...
0f80 a8 72 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .r..............................
0fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 e0 79 af 00 00 00 00 00 00 00 00 00 .....................y..........
1040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1080 00 00 00 00 00 00 00 00 12 00 00 00 49 6e 70 75 74 44 65 76 69 63 65 4d 61 74 63 68 65 72 00 00 ............InputDeviceMatcher..
10a0 31 72 00 00 75 73 69 6e 67 20 53 79 73 74 65 6d 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 1r..using.System;..using.System.
10c0 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47 65 6e 65 72 69 63 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 Collections.Generic;..using.Syst
10e0 65 6d 2e 4c 69 6e 71 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 54 65 78 74 2e 52 65 67 75 em.Linq;..using.System.Text.Regu
1100 6c 61 72 45 78 70 72 65 73 73 69 6f 6e 73 3b 0d 0a 75 73 69 6e 67 20 55 6e 69 74 79 45 6e 67 69 larExpressions;..using.UnityEngi
1120 6e 65 2e 49 6e 70 75 74 53 79 73 74 65 6d 2e 55 74 69 6c 69 74 69 65 73 3b 0d 0a 0d 0a 6e 61 6d ne.InputSystem.Utilities;....nam
1140 65 73 70 61 63 65 20 55 6e 69 74 79 45 6e 67 69 6e 65 2e 49 6e 70 75 74 53 79 73 74 65 6d 2e 4c espace.UnityEngine.InputSystem.L
1160 61 79 6f 75 74 73 0d 0a 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 ayouts..{......///.<summary>....
1180 20 20 2f 2f 2f 20 53 70 65 63 69 66 69 63 61 74 69 6f 6e 20 74 68 61 74 20 63 61 6e 20 62 65 20 ..///.Specification.that.can.be.
11a0 6d 61 74 63 68 65 64 20 61 67 61 69 6e 73 74 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e matched.against.an.<see.cref="In
11c0 70 75 74 44 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 22 2f 3e 2e 20 54 68 69 73 20 69 73 putDeviceDescription"/>..This.is
11e0 0d 0a 20 20 20 20 2f 2f 2f 20 75 73 65 64 20 74 6f 20 66 69 6e 64 20 77 68 69 63 68 20 3c 73 65 ......///.used.to.find.which.<se
1200 65 20 63 72 65 66 3d 22 49 6e 70 75 74 43 6f 6e 74 72 6f 6c 4c 61 79 6f 75 74 22 2f 3e 20 74 6f e.cref="InputControlLayout"/>.to
1220 20 63 72 65 61 74 65 20 66 6f 72 20 61 20 64 65 76 69 63 65 20 77 68 65 6e 20 69 74 20 69 73 20 .create.for.a.device.when.it.is.
1240 64 69 73 63 6f 76 65 72 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d discovered.......///.</summary>.
1260 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 45 61 63 68 .....///.<remarks>......///.Each
1280 20 6d 61 74 63 68 65 72 20 69 73 20 62 61 73 69 63 61 6c 6c 79 20 61 20 73 65 74 20 6f 66 20 6b .matcher.is.basically.a.set.of.k
12a0 65 79 2f 76 61 6c 75 65 20 70 61 69 72 73 20 77 68 65 72 65 20 65 61 63 68 20 76 61 6c 75 65 20 ey/value.pairs.where.each.value.
12c0 6d 61 79 20 65 69 74 68 65 72 20 62 65 0d 0a 20 20 20 20 2f 2f 2f 20 61 20 72 65 67 75 6c 61 72 may.either.be......///.a.regular
12e0 20 65 78 70 72 65 73 73 69 6f 6e 20 6f 72 20 61 20 70 6c 61 69 6e 20 76 61 6c 75 65 20 6f 62 6a .expression.or.a.plain.value.obj
1300 65 63 74 2e 20 54 68 65 20 63 65 6e 74 72 61 6c 20 6d 65 74 68 6f 64 20 66 6f 72 20 74 65 73 74 ect..The.central.method.for.test
1320 69 6e 67 20 61 20 67 69 76 65 6e 20 6d 61 74 63 68 65 72 0d 0a 20 20 20 20 2f 2f 2f 20 61 67 61 ing.a.given.matcher......///.aga
1340 69 6e 73 74 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 70 75 74 44 65 76 69 63 65 44 65 inst.an.<see.cref="InputDeviceDe
1360 73 63 72 69 70 74 69 6f 6e 22 2f 3e 20 69 73 20 3c 73 65 65 20 63 72 65 66 3d 22 4d 61 74 63 68 scription"/>.is.<see.cref="Match
1380 50 65 72 63 65 6e 74 61 67 65 22 2f 3e 2e 0d 0a 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 2f 2f 2f Percentage"/>.......///......///
13a0 20 56 61 72 69 6f 75 73 20 68 65 6c 70 65 72 20 6d 65 74 68 6f 64 73 20 73 75 63 68 20 61 73 20 .Various.helper.methods.such.as.
13c0 3c 73 65 65 20 63 72 65 66 3d 22 57 69 74 68 49 6e 74 65 72 66 61 63 65 22 2f 3e 20 6f 72 20 3c <see.cref="WithInterface"/>.or.<
13e0 73 65 65 20 63 72 65 66 3d 22 57 69 74 68 43 61 70 61 62 69 6c 69 74 79 7b 54 56 61 6c 75 65 7d see.cref="WithCapability{TValue}
1400 22 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 61 73 73 69 73 74 20 77 69 74 68 20 63 72 65 61 74 69 6e "/>......///.assist.with.creatin
1420 67 20 6d 61 74 63 68 65 72 73 2e 0d 0a 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 2f 2f 2f 20 3c 65 g.matchers.......///......///.<e
1440 78 61 6d 70 6c 65 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 2f 2f 2f xample>......///.<code>......///
1460 20 2f 2f 20 41 20 6d 61 74 63 68 65 72 20 74 68 61 74 20 6d 61 74 63 68 65 73 20 61 20 50 53 34 .//.A.matcher.that.matches.a.PS4
1480 20 63 6f 6e 74 72 6f 6c 6c 65 72 20 62 79 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 6e 65 .controller.by.name.......///.ne
14a0 77 20 49 6e 70 75 74 44 65 76 69 63 65 4d 61 74 63 68 65 72 28 29 0d 0a 20 20 20 20 2f 2f 2f 20 w.InputDeviceMatcher()......///.
14c0 20 20 20 20 2e 57 69 74 68 49 6e 74 65 72 66 61 63 65 28 22 48 49 44 22 29 0d 0a 20 20 20 20 2f .....WithInterface("HID")....../
14e0 2f 2f 20 20 20 20 20 2e 57 69 74 68 4d 61 6e 75 66 61 63 74 75 72 65 72 28 22 53 6f 6e 79 2e 2b //......WithManufacturer("Sony.+
1500 45 6e 74 65 72 74 61 69 6e 6d 65 6e 74 22 29 20 2f 2f 20 52 65 67 75 6c 61 72 20 65 78 70 72 65 Entertainment").//.Regular.expre
1520 73 73 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 20 20 20 20 2e 57 69 74 68 50 72 6f 64 75 63 74 28 ssion......///......WithProduct(
1540 22 57 69 72 65 6c 65 73 73 20 43 6f 6e 74 72 6f 6c 6c 65 72 22 29 29 3b 0d 0a 20 20 20 20 2f 2f "Wireless.Controller"));......//
1560 2f 0d 0a 20 20 20 20 2f 2f 2f 20 2f 2f 20 41 20 6d 61 74 63 68 65 72 20 74 68 61 74 20 6d 61 74 /......///.//.A.matcher.that.mat
1580 63 68 65 73 20 74 68 65 20 73 61 6d 65 20 63 6f 6e 74 72 6f 6c 6c 65 72 20 62 79 20 50 49 44 20 ches.the.same.controller.by.PID.
15a0 61 6e 64 20 56 49 44 2e 0d 0a 20 20 20 20 2f 2f 2f 20 6e 65 77 20 49 6e 70 75 74 44 65 76 69 63 and.VID.......///.new.InputDevic
15c0 65 4d 61 74 63 68 65 72 28 29 0d 0a 20 20 20 20 2f 2f 2f 20 20 20 20 20 2e 57 69 74 68 49 6e 74 eMatcher()......///......WithInt
15e0 65 72 66 61 63 65 28 22 48 49 44 22 29 0d 0a 20 20 20 20 2f 2f 2f 20 20 20 20 20 2e 57 69 74 68 erface("HID")......///......With
1600 43 61 70 61 62 69 6c 69 74 79 28 22 76 65 6e 64 6f 72 49 64 22 2c 20 30 78 35 34 43 29 20 2f 2f Capability("vendorId",.0x54C).//
1620 20 53 6f 6e 79 20 45 6e 74 65 72 74 61 69 6e 6d 65 6e 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 20 20 .Sony.Entertainment.......///...
1640 20 20 2e 57 69 74 68 43 61 70 61 62 69 6c 69 74 79 28 22 70 72 6f 64 75 63 74 49 64 22 2c 20 30 ...WithCapability("productId",.0
1660 78 39 43 43 29 29 3b 20 2f 2f 20 57 69 72 65 6c 65 73 73 20 63 6f 6e 74 72 6f 6c 6c 65 72 2e 0d x9CC));.//.Wireless.controller..
1680 0a 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 65 78 61 6d .....///.</code>......///.</exam
16a0 70 6c 65 3e 0d 0a 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 2f 2f 2f 20 46 6f 72 20 65 61 63 68 20 ple>......///......///.For.each.
16c0 72 65 67 69 73 74 65 72 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 70 75 74 43 6f 6e 74 72 registered.<see.cref="InputContr
16e0 6f 6c 4c 61 79 6f 75 74 22 2f 3e 20 69 6e 20 74 68 65 20 73 79 73 74 65 6d 20 74 68 61 74 20 72 olLayout"/>.in.the.system.that.r
1700 65 70 72 65 73 65 6e 74 73 0d 0a 20 20 20 20 2f 2f 2f 20 61 20 64 65 76 69 63 65 2c 20 61 72 62 epresents......///.a.device,.arb
1720 69 74 72 61 72 79 20 6d 61 6e 79 20 6d 61 74 63 68 65 72 73 20 63 61 6e 20 62 65 20 61 64 64 65 itrary.many.matchers.can.be.adde
1740 64 2e 20 41 20 6d 61 74 63 68 65 72 20 63 61 6e 20 62 65 20 73 75 70 70 6c 69 65 64 20 65 69 74 d..A.matcher.can.be.supplied.eit
1760 68 65 72 0d 0a 20 20 20 20 2f 2f 2f 20 61 74 20 72 65 67 69 73 74 72 61 74 69 6f 6e 20 74 69 6d her......///.at.registration.tim
1780 65 20 6f 72 20 61 74 20 61 6e 79 20 70 6f 69 6e 74 20 61 66 74 65 72 20 75 73 69 6e 67 20 3c 73 e.or.at.any.point.after.using.<s
17a0 65 65 20 63 72 65 66 3d 22 49 6e 70 75 74 53 79 73 74 65 6d 2e 52 65 67 69 73 74 65 72 4c 61 79 ee.cref="InputSystem.RegisterLay
17c0 6f 75 74 4d 61 74 63 68 65 72 22 2f 3e 2e 0d 0a 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 2f 2f 2f outMatcher"/>.......///......///
17e0 20 3c 65 78 61 6d 70 6c 65 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 20 20 .<example>......///.<code>......
1800 2f 2f 2f 20 2f 2f 20 53 75 70 70 6c 79 20 61 20 6d 61 74 63 68 65 72 20 61 74 20 72 65 67 69 73 ///.//.Supply.a.matcher.at.regis
1820 74 72 61 74 69 6f 6e 20 74 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 6e 70 75 74 53 79 73 74 tration.time.......///.InputSyst
1840 65 6d 2e 52 65 67 69 73 74 65 72 4c 61 79 6f 75 74 26 6c 74 3b 44 75 61 6c 53 68 6f 63 6b 34 47 em.RegisterLayout&lt;DualShock4G
1860 61 6d 65 70 61 64 48 49 44 26 67 74 3b 28 0d 0a 20 20 20 20 2f 2f 2f 20 20 20 20 20 6d 61 74 63 amepadHID&gt;(......///.....matc
1880 68 65 73 3a 20 6e 65 77 20 49 6e 70 75 74 44 65 76 69 63 65 4d 61 74 63 68 65 72 28 29 0d 0a 20 hes:.new.InputDeviceMatcher()...
18a0 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 49 6e 74 65 72 66 61 63 65 28 22 48 ...///..........WithInterface("H
18c0 49 44 22 29 0d 0a 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 43 61 70 61 62 ID")......///..........WithCapab
18e0 69 6c 69 74 79 28 22 76 65 6e 64 6f 72 49 64 22 2c 20 30 78 35 34 43 29 20 2f 2f 20 53 6f 6e 79 ility("vendorId",.0x54C).//.Sony
1900 20 45 6e 74 65 72 74 61 69 6e 6d 65 6e 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 .Entertainment.......///........
1920 20 2e 57 69 74 68 43 61 70 61 62 69 6c 69 74 79 28 22 70 72 6f 64 75 63 74 49 64 22 2c 20 30 78 ..WithCapability("productId",.0x
1940 39 43 43 29 29 3b 20 2f 2f 20 57 69 72 65 6c 65 73 73 20 63 6f 6e 74 72 6f 6c 6c 65 72 2e 0d 0a 9CC));.//.Wireless.controller...
1960 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 2f 2f 2f 20 2f 2f 20 53 75 70 70 6c 79 20 61 20 6d 61 74 ....///......///.//.Supply.a.mat
1980 63 68 65 72 20 66 6f 72 20 61 6e 20 61 6c 72 65 61 64 79 20 72 65 67 69 73 74 65 72 65 64 20 6c cher.for.an.already.registered.l
19a0 61 79 6f 75 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 2f 2f 20 54 68 69 73 20 63 61 6e 20 62 65 20 63 ayout.......///.//.This.can.be.c
19c0 61 6c 6c 65 64 20 72 65 70 65 61 74 65 64 6c 79 20 61 6e 64 20 77 69 6c 6c 20 61 64 64 20 61 6e alled.repeatedly.and.will.add.an
19e0 6f 74 68 65 72 20 6d 61 74 63 68 65 72 0d 0a 20 20 20 20 2f 2f 2f 20 2f 2f 20 65 61 63 68 20 74 other.matcher......///.//.each.t
1a00 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 6e 70 75 74 53 79 73 74 65 6d 2e 52 65 67 69 73 74 ime.......///.InputSystem.Regist
1a20 65 72 4c 61 79 6f 75 74 4d 61 74 63 68 65 72 26 6c 74 3b 44 75 61 6c 53 68 6f 63 6b 34 47 61 6d erLayoutMatcher&lt;DualShock4Gam
1a40 65 70 61 64 48 49 44 26 67 74 3b 28 0d 0a 20 20 20 20 2f 2f 2f 20 20 20 20 20 6d 61 74 63 68 65 epadHID&gt;(......///.....matche
1a60 73 3a 20 6e 65 77 20 49 6e 70 75 74 44 65 76 69 63 65 4d 61 74 63 68 65 72 28 29 0d 0a 20 20 20 s:.new.InputDeviceMatcher().....
1a80 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 49 6e 74 65 72 66 61 63 65 28 22 48 49 44 .///..........WithInterface("HID
1aa0 22 29 0d 0a 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 4d 61 6e 75 66 61 63 ")......///..........WithManufac
1ac0 74 75 72 65 72 28 22 53 6f 6e 79 2e 2b 45 6e 74 65 72 74 61 69 6e 6d 65 6e 74 22 29 0d 0a 20 20 turer("Sony.+Entertainment")....
1ae0 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 50 72 6f 64 75 63 74 28 22 57 69 72 65 ..///..........WithProduct("Wire
1b00 6c 65 73 73 20 43 6f 6e 74 72 6f 6c 6c 65 72 22 29 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 63 less.Controller"));......///.</c
1b20 6f 64 65 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 65 78 61 6d 70 6c 65 3e 0d 0a 20 20 20 20 2f 2f ode>......///.</example>......//
1b40 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 61 6c 73 6f 20 63 /.</remarks>......///.<seealso.c
1b60 72 65 66 3d 22 49 6e 70 75 74 44 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 22 2f 3e 0d 0a ref="InputDeviceDescription"/>..
1b80 20 20 20 20 2f 2f 2f 20 3c 73 65 65 61 6c 73 6f 20 63 72 65 66 3d 22 49 6e 70 75 74 44 65 76 69 ....///.<seealso.cref="InputDevi
1ba0 63 65 2e 64 65 73 63 72 69 70 74 69 6f 6e 22 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 61 ce.description"/>......///.<seea
1bc0 6c 73 6f 20 63 72 65 66 3d 22 49 6e 70 75 74 53 79 73 74 65 6d 2e 52 65 67 69 73 74 65 72 4c 61 lso.cref="InputSystem.RegisterLa
1be0 79 6f 75 74 4d 61 74 63 68 65 72 22 2f 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 75 63 youtMatcher"/>......public.struc
1c00 74 20 49 6e 70 75 74 44 65 76 69 63 65 4d 61 74 63 68 65 72 20 3a 20 49 45 71 75 61 74 61 62 6c t.InputDeviceMatcher.:.IEquatabl
1c20 65 3c 49 6e 70 75 74 44 65 76 69 63 65 4d 61 74 63 68 65 72 3e 0d 0a 20 20 20 20 7b 0d 0a 20 20 e<InputDeviceMatcher>......{....
1c40 20 20 20 20 20 20 70 72 69 76 61 74 65 20 4b 65 79 56 61 6c 75 65 50 61 69 72 3c 49 6e 74 65 72 ......private.KeyValuePair<Inter
1c60 6e 65 64 53 74 72 69 6e 67 2c 20 6f 62 6a 65 63 74 3e 5b 5d 20 6d 5f 50 61 74 74 65 72 6e 73 3b nedString,.object>[].m_Patterns;
1c80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 ............///.<summary>.......
1ca0 20 20 20 2f 2f 2f 20 49 66 20 74 72 75 65 2c 20 74 68 65 20 6d 61 74 63 68 65 72 20 68 61 73 20 ...///.If.true,.the.matcher.has.
1cc0 62 65 65 6e 20 64 65 66 61 75 6c 74 2d 69 6e 69 74 69 61 6c 69 7a 65 64 20 61 6e 64 20 63 6f 6e been.default-initialized.and.con
1ce0 74 61 69 6e 73 20 6e 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 61 74 63 68 69 6e 67 20 3c tains.no..........///.matching.<
1d00 73 65 65 20 63 72 65 66 3d 22 70 61 74 74 65 72 6e 73 22 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 see.cref="patterns"/>...........
1d20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 76 61 6c ///.</summary>..........///.<val
1d40 75 65 3e 57 68 65 74 68 65 72 20 74 68 65 20 6d 61 74 63 68 65 72 20 63 6f 6e 74 61 69 6e 73 20 ue>Whether.the.matcher.contains.
1d60 61 6e 79 20 6d 61 74 63 68 69 6e 67 20 70 61 74 74 65 72 6e 73 2e 3c 2f 76 61 6c 75 65 3e 0d 0a any.matching.patterns.</value>..
1d80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 61 6c 73 6f 20 63 72 65 66 3d 22 70 61 74 74 65 ........///.<seealso.cref="patte
1da0 72 6e 73 22 2f 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 65 6d 70 74 rns"/>..........public.bool.empt
1dc0 79 20 3d 3e 20 6d 5f 50 61 74 74 65 72 6e 73 20 3d 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 y.=>.m_Patterns.==.null;........
1de0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 ....///.<summary>..........///.T
1e00 68 65 20 6c 69 73 74 20 6f 66 20 70 61 74 74 65 72 6e 73 20 74 6f 20 6d 61 74 63 68 2e 0d 0a 20 he.list.of.patterns.to.match....
1e20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f .......///.</summary>........../
1e40 2f 2f 20 3c 76 61 6c 75 65 3e 4c 69 73 74 20 6f 66 20 6d 61 74 63 68 69 6e 67 20 70 61 74 74 65 //.<value>List.of.matching.patte
1e60 72 6e 73 2e 3c 2f 76 61 6c 75 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 rns.</value>..........///.<remar
1e80 6b 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 45 61 63 68 20 70 61 74 74 65 72 6e 20 69 73 ks>..........///.Each.pattern.is
1ea0 20 63 6f 6d 70 72 69 73 65 64 20 6f 66 20 61 20 6b 65 79 20 61 6e 64 20 61 20 76 61 6c 75 65 2e .comprised.of.a.key.and.a.value.
1ec0 20 54 68 65 20 6b 65 79 20 64 65 74 65 72 6d 69 6e 65 73 20 77 68 69 63 68 20 70 61 72 74 0d 0a .The.key.determines.which.part..
1ee0 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 66 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 70 ........///.of.an.<see.cref="Inp
1f00 75 74 44 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 22 2f 3e 20 74 6f 20 6d 61 74 63 68 2e utDeviceDescription"/>.to.match.
1f20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 ..........///..........///.The.v
1f40 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 65 78 70 65 63 74 65 64 20 76 61 6c alue.represents.the.expected.val
1f60 75 65 2e 20 54 68 69 73 20 63 61 6e 20 62 65 20 65 69 74 68 65 72 20 61 20 70 6c 61 69 6e 20 73 ue..This.can.be.either.a.plain.s
1f80 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 28 6d 61 74 63 68 65 64 20 63 61 73 65 tring..........///.(matched.case
1fa0 2d 69 6e 73 65 6e 73 69 74 69 76 65 29 20 6f 72 20 61 20 72 65 67 75 6c 61 72 20 65 78 70 72 65 -insensitive).or.a.regular.expre
1fc0 73 73 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a ssion...........///.</remarks>..
1fe0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 61 6c 73 6f 20 63 72 65 66 3d 22 57 69 74 68 49 ........///.<seealso.cref="WithI
2000 6e 74 65 72 66 61 63 65 22 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 61 6c 73 nterface"/>..........///.<seeals
2020 6f 20 63 72 65 66 3d 22 57 69 74 68 43 61 70 61 62 69 6c 69 74 79 7b 54 56 61 6c 75 65 7d 22 2f o.cref="WithCapability{TValue}"/
2040 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 61 6c 73 6f 20 63 72 65 66 3d 22 57 69 >..........///.<seealso.cref="Wi
2060 74 68 50 72 6f 64 75 63 74 22 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 61 6c thProduct"/>..........///.<seeal
2080 73 6f 20 63 72 65 66 3d 22 57 69 74 68 4d 61 6e 75 66 61 63 74 75 72 65 72 22 2f 3e 0d 0a 20 20 so.cref="WithManufacturer"/>....
20a0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 61 6c 73 6f 20 63 72 65 66 3d 22 57 69 74 68 56 65 72 ......///.<seealso.cref="WithVer
20c0 73 69 6f 6e 22 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 61 6c 73 6f 20 63 72 sion"/>..........///.<seealso.cr
20e0 65 66 3d 22 57 69 74 68 44 65 76 69 63 65 43 6c 61 73 73 22 2f 3e 0d 0a 20 20 20 20 20 20 20 20 ef="WithDeviceClass"/>..........
2100 70 75 62 6c 69 63 20 49 45 6e 75 6d 65 72 61 62 6c 65 3c 4b 65 79 56 61 6c 75 65 50 61 69 72 3c public.IEnumerable<KeyValuePair<
2120 73 74 72 69 6e 67 2c 20 6f 62 6a 65 63 74 3e 3e 20 70 61 74 74 65 72 6e 73 0d 0a 20 20 20 20 20 string,.object>>.patterns.......
2140 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 ...{..............get...........
2160 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 5f 50 61 74 74 ...{..................if.(m_Patt
2180 65 72 6e 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 erns.==.null)...................
21a0 20 20 20 79 69 65 6c 64 20 62 72 65 61 6b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ...yield.break;.................
21c0 20 20 20 76 61 72 20 63 6f 75 6e 74 20 3d 20 6d 5f 50 61 74 74 65 72 6e 73 2e 4c 65 6e 67 74 68 ...var.count.=.m_Patterns.Length
21e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 ;..................for.(var.i.=.
2200 30 3b 20 69 20 3c 20 63 6f 75 6e 74 3b 20 2b 2b 69 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 0;.i.<.count;.++i)..............
2220 20 20 20 20 20 20 20 20 79 69 65 6c 64 20 72 65 74 75 72 6e 20 6e 65 77 20 4b 65 79 56 61 6c 75 ........yield.return.new.KeyValu
2240 65 50 61 69 72 3c 73 74 72 69 6e 67 2c 20 6f 62 6a 65 63 74 3e 28 6d 5f 50 61 74 74 65 72 6e 73 ePair<string,.object>(m_Patterns
2260 5b 69 5d 2e 4b 65 79 2e 54 6f 53 74 72 69 6e 67 28 29 2c 20 6d 5f 50 61 74 74 65 72 6e 73 5b 69 [i].Key.ToString(),.m_Patterns[i
2280 5d 2e 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 ].Value);..............}........
22a0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 ..}............///.<summary>....
22c0 20 20 20 20 20 20 2f 2f 2f 20 41 64 64 20 61 20 70 61 74 74 65 72 6e 20 74 6f 20 3c 73 65 65 20 ......///.Add.a.pattern.to.<see.
22e0 63 72 65 66 3d 22 70 61 74 74 65 72 6e 73 22 2f 3e 20 74 6f 20 6d 61 74 63 68 20 61 6e 20 3c 73 cref="patterns"/>.to.match.an.<s
2300 65 65 20 63 72 65 66 3d 22 49 6e 70 75 74 44 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e ee.cref="InputDeviceDescription.
2320 69 6e 74 65 72 66 61 63 65 4e 61 6d 65 22 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c interfaceName"/>...........///.<
2340 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 /summary>..........///.<param.na
2360 6d 65 3d 22 70 61 74 74 65 72 6e 22 3e 53 74 72 69 6e 67 20 74 6f 20 6d 61 74 63 68 2e 3c 2f 70 me="pattern">String.to.match.</p
2380 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 aram>..........///.<param.name="
23a0 73 75 70 70 6f 72 74 52 65 67 65 78 22 3e 49 66 20 74 72 75 65 20 28 64 65 66 61 75 6c 74 29 2c supportRegex">If.true.(default),
23c0 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 70 61 74 74 65 72 6e 22 2f 3e 20 63 61 6e 20 .<paramref.name="pattern"/>.can.
23e0 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 20 72 65 67 75 6c 61 72 20 65 78 70 72 65 73 be..........///.a.regular.expres
2400 73 69 6f 6e 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 sion.</param>..........///.<retu
2420 72 6e 73 3e 54 68 65 20 6d 6f 64 69 66 69 65 64 20 64 65 76 69 63 65 20 6d 61 74 63 68 65 72 20 rns>The.modified.device.matcher.
2440 77 69 74 68 20 74 68 65 20 61 64 64 65 64 20 70 61 74 74 65 72 6e 2e 3c 2f 72 65 74 75 72 6e 73 with.the.added.pattern.</returns
2460 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 61 6c 73 6f 20 63 72 65 66 3d 22 49 6e >..........///.<seealso.cref="In
2480 70 75 74 44 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 69 6e 74 65 72 66 61 63 65 4e 61 putDeviceDescription.interfaceNa
24a0 6d 65 22 2f 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 70 75 74 44 65 76 69 63 me"/>..........public.InputDevic
24c0 65 4d 61 74 63 68 65 72 20 57 69 74 68 49 6e 74 65 72 66 61 63 65 28 73 74 72 69 6e 67 20 70 61 eMatcher.WithInterface(string.pa
24e0 74 74 65 72 6e 2c 20 62 6f 6f 6c 20 73 75 70 70 6f 72 74 52 65 67 65 78 20 3d 20 74 72 75 65 29 ttern,.bool.supportRegex.=.true)
2500 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 ..........{..............return.
2520 57 69 74 68 28 6b 49 6e 74 65 72 66 61 63 65 4b 65 79 2c 20 70 61 74 74 65 72 6e 2c 20 73 75 70 With(kInterfaceKey,.pattern,.sup
2540 70 6f 72 74 52 65 67 65 78 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 portRegex);..........}..........
2560 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 64 64 ..///.<summary>..........///.Add
2580 20 61 20 70 61 74 74 65 72 6e 20 74 6f 20 3c 73 65 65 20 63 72 65 66 3d 22 70 61 74 74 65 72 6e .a.pattern.to.<see.cref="pattern
25a0 73 22 2f 3e 20 74 6f 20 6d 61 74 63 68 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 70 75 74 s"/>.to.match.a.<see.cref="Input
25c0 44 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 64 65 76 69 63 65 43 6c 61 73 73 22 2f 3e DeviceDescription.deviceClass"/>
25e0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 ...........///.</summary>.......
2600 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61 74 74 65 72 6e 22 3e 53 74 72 ...///.<param.name="pattern">Str
2620 69 6e 67 20 74 6f 20 6d 61 74 63 68 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f ing.to.match.</param>........../
2640 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 75 70 70 6f 72 74 52 65 67 65 78 22 3e 49 66 //.<param.name="supportRegex">If
2660 20 74 72 75 65 20 28 64 65 66 61 75 6c 74 29 2c 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d .true.(default),.<paramref.name=
2680 22 70 61 74 74 65 72 6e 22 2f 3e 20 63 61 6e 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 "pattern"/>.can.be..........///.
26a0 61 20 72 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 a.regular.expression.</param>...
26c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 6d 6f 64 69 66 69 65 64 .......///.<returns>The.modified
26e0 20 64 65 76 69 63 65 20 6d 61 74 63 68 65 72 20 77 69 74 68 20 74 68 65 20 61 64 64 65 64 20 70 .device.matcher.with.the.added.p
2700 61 74 74 65 72 6e 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c attern.</returns>..........///.<
2720 73 65 65 61 6c 73 6f 20 63 72 65 66 3d 22 49 6e 70 75 74 44 65 76 69 63 65 44 65 73 63 72 69 70 seealso.cref="InputDeviceDescrip
2740 74 69 6f 6e 2e 64 65 76 69 63 65 43 6c 61 73 73 22 2f 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 tion.deviceClass"/>..........pub
2760 6c 69 63 20 49 6e 70 75 74 44 65 76 69 63 65 4d 61 74 63 68 65 72 20 57 69 74 68 44 65 76 69 63 lic.InputDeviceMatcher.WithDevic
2780 65 43 6c 61 73 73 28 73 74 72 69 6e 67 20 70 61 74 74 65 72 6e 2c 20 62 6f 6f 6c 20 73 75 70 70 eClass(string.pattern,.bool.supp
27a0 6f 72 74 52 65 67 65 78 20 3d 20 74 72 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 ortRegex.=.true)..........{.....
27c0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 57 69 74 68 28 6b 44 65 76 69 63 65 43 6c 61 73 .........return.With(kDeviceClas
27e0 73 4b 65 79 2c 20 70 61 74 74 65 72 6e 2c 20 73 75 70 70 6f 72 74 52 65 67 65 78 29 3b 0d 0a 20 sKey,.pattern,.supportRegex);...
2800 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 .......}............///.<summary
2820 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 64 64 20 61 20 70 61 74 74 65 72 6e 20 74 6f 20 >..........///.Add.a.pattern.to.
2840 3c 73 65 65 20 63 72 65 66 3d 22 70 61 74 74 65 72 6e 73 22 2f 3e 20 74 6f 20 6d 61 74 63 68 20 <see.cref="patterns"/>.to.match.
2860 61 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 70 75 74 44 65 76 69 63 65 44 65 73 63 72 69 70 74 a.<see.cref="InputDeviceDescript
2880 69 6f 6e 2e 6d 61 6e 75 66 61 63 74 75 72 65 72 22 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f ion.manufacturer"/>...........//
28a0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d /.</summary>..........///.<param
28c0 20 6e 61 6d 65 3d 22 70 61 74 74 65 72 6e 22 3e 53 74 72 69 6e 67 20 74 6f 20 6d 61 74 63 68 2e .name="pattern">String.to.match.
28e0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d </param>..........///.<param.nam
2900 65 3d 22 73 75 70 70 6f 72 74 52 65 67 65 78 22 3e 49 66 20 74 72 75 65 20 28 64 65 66 61 75 6c e="supportRegex">If.true.(defaul
2920 74 29 2c 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 70 61 74 74 65 72 6e 22 2f 3e 20 63 t),.<paramref.name="pattern"/>.c
2940 61 6e 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 20 72 65 67 75 6c 61 72 20 65 78 70 an.be..........///.a.regular.exp
2960 72 65 73 73 69 6f 6e 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 ression.</param>..........///.<r
2980 65 74 75 72 6e 73 3e 54 68 65 20 6d 6f 64 69 66 69 65 64 20 64 65 76 69 63 65 20 6d 61 74 63 68 eturns>The.modified.device.match
29a0 65 72 20 77 69 74 68 20 74 68 65 20 61 64 64 65 64 20 70 61 74 74 65 72 6e 2e 3c 2f 72 65 74 75 er.with.the.added.pattern.</retu
29c0 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 61 6c 73 6f 20 63 72 65 66 3d rns>..........///.<seealso.cref=
29e0 22 49 6e 70 75 74 44 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 6d 61 6e 75 66 61 63 74 "InputDeviceDescription.manufact
2a00 75 72 65 72 22 2f 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 70 75 74 44 65 76 urer"/>..........public.InputDev
2a20 69 63 65 4d 61 74 63 68 65 72 20 57 69 74 68 4d 61 6e 75 66 61 63 74 75 72 65 72 28 73 74 72 69 iceMatcher.WithManufacturer(stri
2a40 6e 67 20 70 61 74 74 65 72 6e 2c 20 62 6f 6f 6c 20 73 75 70 70 6f 72 74 52 65 67 65 78 20 3d 20 ng.pattern,.bool.supportRegex.=.
2a60 74 72 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 true)..........{..............re
2a80 74 75 72 6e 20 57 69 74 68 28 6b 4d 61 6e 75 66 61 63 74 75 72 65 72 4b 65 79 2c 20 70 61 74 74 turn.With(kManufacturerKey,.patt
2aa0 65 72 6e 2c 20 73 75 70 70 6f 72 74 52 65 67 65 78 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a ern,.supportRegex);..........}..
2ac0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 ..........///.<summary>.........
2ae0 20 2f 2f 2f 20 41 64 64 20 61 20 70 61 74 74 65 72 6e 20 74 6f 20 3c 73 65 65 20 63 72 65 66 3d .///.Add.a.pattern.to.<see.cref=
2b00 22 70 61 74 74 65 72 6e 73 22 2f 3e 20 74 6f 20 6d 61 74 63 68 20 61 20 3c 73 65 65 20 63 72 65 "patterns"/>.to.match.a.<see.cre
2b20 66 3d 22 49 6e 70 75 74 44 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 70 72 6f 64 75 63 f="InputDeviceDescription.produc
2b40 74 22 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 t"/>...........///.</summary>...
2b60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61 74 74 65 72 6e 22 .......///.<param.name="pattern"
2b80 3e 53 74 72 69 6e 67 20 74 6f 20 6d 61 74 63 68 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 >String.to.match.</param>.......
2ba0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 75 70 70 6f 72 74 52 65 67 65 78 ...///.<param.name="supportRegex
2bc0 22 3e 49 66 20 74 72 75 65 20 28 64 65 66 61 75 6c 74 29 2c 20 3c 70 61 72 61 6d 72 65 66 20 6e ">If.true.(default),.<paramref.n
2be0 61 6d 65 3d 22 70 61 74 74 65 72 6e 22 2f 3e 20 63 61 6e 20 62 65 0d 0a 20 20 20 20 20 20 20 20 ame="pattern"/>.can.be..........
2c00 2f 2f 2f 20 61 20 72 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 2e 3c 2f 70 61 72 61 6d ///.a.regular.expression.</param
2c20 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 6d 6f 64 69 >..........///.<returns>The.modi
2c40 66 69 65 64 20 64 65 76 69 63 65 20 6d 61 74 63 68 65 72 20 77 69 74 68 20 74 68 65 20 61 64 64 fied.device.matcher.with.the.add
2c60 65 64 20 70 61 74 74 65 72 6e 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f ed.pattern.</returns>........../
2c80 2f 2f 20 3c 73 65 65 61 6c 73 6f 20 63 72 65 66 3d 22 49 6e 70 75 74 44 65 76 69 63 65 44 65 73 //.<seealso.cref="InputDeviceDes
2ca0 63 72 69 70 74 69 6f 6e 2e 70 72 6f 64 75 63 74 22 2f 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 cription.product"/>..........pub
2cc0 6c 69 63 20 49 6e 70 75 74 44 65 76 69 63 65 4d 61 74 63 68 65 72 20 57 69 74 68 50 72 6f 64 75 lic.InputDeviceMatcher.WithProdu
2ce0 63 74 28 73 74 72 69 6e 67 20 70 61 74 74 65 72 6e 2c 20 62 6f 6f 6c 20 73 75 70 70 6f 72 74 52 ct(string.pattern,.bool.supportR
2d00 65 67 65 78 20 3d 20 74 72 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 egex.=.true)..........{.........
2d20 20 20 20 20 20 72 65 74 75 72 6e 20 57 69 74 68 28 6b 50 72 6f 64 75 63 74 4b 65 79 2c 20 70 61 .....return.With(kProductKey,.pa
2d40 74 74 65 72 6e 2c 20 73 75 70 70 6f 72 74 52 65 67 65 78 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d ttern,.supportRegex);..........}
2d60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 ............///.<summary>.......
2d80 20 20 20 2f 2f 2f 20 41 64 64 20 61 20 70 61 74 74 65 72 6e 20 74 6f 20 3c 73 65 65 20 63 72 65 ...///.Add.a.pattern.to.<see.cre
2da0 66 3d 22 70 61 74 74 65 72 6e 73 22 2f 3e 20 74 6f 20 6d 61 74 63 68 20 61 20 3c 73 65 65 20 63 f="patterns"/>.to.match.a.<see.c
2dc0 72 65 66 3d 22 49 6e 70 75 74 44 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 76 65 72 73 ref="InputDeviceDescription.vers
2de0 69 6f 6e 22 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d ion"/>...........///.</summary>.
2e00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61 74 74 65 72 .........///.<param.name="patter
2e20 6e 22 3e 53 74 72 69 6e 67 20 74 6f 20 6d 61 74 63 68 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 n">String.to.match.</param>.....
2e40 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 75 70 70 6f 72 74 52 65 67 .....///.<param.name="supportReg
2e60 65 78 22 3e 49 66 20 74 72 75 65 20 28 64 65 66 61 75 6c 74 29 2c 20 3c 70 61 72 61 6d 72 65 66 ex">If.true.(default),.<paramref
2e80 20 6e 61 6d 65 3d 22 70 61 74 74 65 72 6e 22 2f 3e 20 63 61 6e 20 62 65 0d 0a 20 20 20 20 20 20 .name="pattern"/>.can.be........
2ea0 20 20 2f 2f 2f 20 61 20 72 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 2e 3c 2f 70 61 72 ..///.a.regular.expression.</par
2ec0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 6d 6f am>..........///.<returns>The.mo
2ee0 64 69 66 69 65 64 20 64 65 76 69 63 65 20 6d 61 74 63 68 65 72 20 77 69 74 68 20 74 68 65 20 61 dified.device.matcher.with.the.a
2f00 64 64 65 64 20 70 61 74 74 65 72 6e 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 dded.pattern.</returns>.........
2f20 20 2f 2f 2f 20 3c 73 65 65 61 6c 73 6f 20 63 72 65 66 3d 22 49 6e 70 75 74 44 65 76 69 63 65 44 .///.<seealso.cref="InputDeviceD
2f40 65 73 63 72 69 70 74 69 6f 6e 2e 76 65 72 73 69 6f 6e 22 2f 3e 0d 0a 20 20 20 20 20 20 20 20 70 escription.version"/>..........p
2f60 75 62 6c 69 63 20 49 6e 70 75 74 44 65 76 69 63 65 4d 61 74 63 68 65 72 20 57 69 74 68 56 65 72 ublic.InputDeviceMatcher.WithVer
2f80 73 69 6f 6e 28 73 74 72 69 6e 67 20 70 61 74 74 65 72 6e 2c 20 62 6f 6f 6c 20 73 75 70 70 6f 72 sion(string.pattern,.bool.suppor
2fa0 74 52 65 67 65 78 20 3d 20 74 72 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 tRegex.=.true)..........{.......
2fc0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 57 69 74 68 28 6b 56 65 72 73 69 6f 6e 4b 65 79 2c 20 .......return.With(kVersionKey,.
2fe0 70 61 74 74 65 72 6e 2c 20 73 75 70 70 6f 72 74 52 65 67 65 78 29 3b 0d 0a 20 20 20 20 20 20 20 pattern,.supportRegex);.........
3000 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 .}............///.<summary>.....
3020 20 20 20 20 20 2f 2f 2f 20 41 64 64 20 61 20 70 61 74 74 65 72 6e 20 74 6f 20 3c 73 65 65 20 63 .....///.Add.a.pattern.to.<see.c
3040 72 65 66 3d 22 70 61 74 74 65 72 6e 73 22 2f 3e 20 74 6f 20 6d 61 74 63 68 20 61 6e 20 69 6e 64 ref="patterns"/>.to.match.an.ind
3060 69 76 69 64 75 61 6c 20 63 61 70 61 62 69 6c 69 74 79 20 69 6e 20 3c 73 65 65 20 63 72 65 66 3d ividual.capability.in.<see.cref=
3080 22 49 6e 70 75 74 44 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 63 61 70 61 62 69 6c 69 "InputDeviceDescription.capabili
30a0 74 69 65 73 22 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e ties"/>...........///.</summary>
30c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61 74 68 22 ..........///.<param.name="path"
30e0 3e 50 61 74 68 20 74 6f 20 74 68 65 20 4a 53 4f 4e 20 70 72 6f 70 65 72 74 79 20 75 73 69 6e 67 >Path.to.the.JSON.property.using
3100 20 27 2f 27 20 61 73 20 61 20 73 65 70 61 72 61 74 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f .'/'.as.a.separator,..........//
3120 2f 20 65 2e 67 2e 20 3c 63 3e 22 65 6c 65 6d 65 6e 74 73 2f 63 6f 75 6e 74 22 3c 2f 63 3e 2e 3c /.e.g..<c>"elements/count"</c>.<
3140 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 /param>..........///.<param.name
3160 3d 22 76 61 6c 75 65 22 3e 56 61 6c 75 65 20 74 6f 20 6d 61 74 63 68 2e 20 54 68 69 73 20 63 61 ="value">Value.to.match..This.ca
3180 6e 20 62 65 20 61 20 73 74 72 69 6e 67 2c 20 61 20 72 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 n.be.a.string,.a.regular.express
31a0 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 20 62 6f 6f 6c 65 61 6e 2c 20 61 6e 20 ion,..........///.a.boolean,.an.
31c0 69 6e 74 65 67 65 72 2c 20 6f 72 20 61 20 66 6c 6f 61 74 2e 20 46 6c 6f 61 74 69 6e 67 2d 70 6f integer,.or.a.float..Floating-po
31e0 69 6e 74 20 6e 75 6d 62 65 72 73 20 61 72 65 20 6d 61 74 63 68 65 64 20 77 69 74 68 20 72 65 73 int.numbers.are.matched.with.res
3200 70 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 66 6f 72 20 3c 63 3e 4d 61 74 68 66 2e 45 pect..........///.for.<c>Mathf.E
3220 70 73 69 6c 6f 6e 3c 2f 63 3e 2e 20 56 61 6c 75 65 73 20 61 72 65 20 63 6f 6e 76 65 72 74 65 64 psilon</c>..Values.are.converted
3240 20 62 65 74 77 65 65 6e 20 74 79 70 65 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 61 73 0d .between.types.automatically.as.
3260 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 65 65 64 65 64 20 28 6d 65 61 6e 69 6e 67 20 74 68 61 .........///.needed.(meaning.tha
3280 74 20 61 20 62 6f 6f 6c 20 63 61 6e 20 62 65 20 63 6f 6d 70 61 72 65 64 20 74 6f 20 61 20 73 74 t.a.bool.can.be.compared.to.a.st
32a0 72 69 6e 67 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 29 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 ring,.for.example).</param>.....
32c0 20 20 20 20 20 2f 2f 2f 20 3c 74 79 70 65 70 61 72 61 6d 20 6e 61 6d 65 3d 22 54 56 61 6c 75 65 .....///.<typeparam.name="TValue
32e0 22 3e 54 79 70 65 20 6f 66 20 76 61 6c 75 65 20 74 6f 20 6d 61 74 63 68 2e 3c 2f 74 79 70 65 70 ">Type.of.value.to.match.</typep
3300 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 aram>..........///.<returns>The.
3320 6d 6f 64 69 66 69 65 64 20 64 65 76 69 63 65 20 6d 61 74 63 68 65 72 20 77 69 74 68 20 74 68 65 modified.device.matcher.with.the
3340 20 61 64 64 65 64 20 70 61 74 74 65 72 6e 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 .added.pattern.</returns>.......
3360 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 61 ...///.<remarks>..........///.Ca
3380 70 61 62 69 6c 69 74 69 65 73 20 61 72 65 20 73 74 6f 72 65 64 20 61 73 20 4a 53 4f 4e 20 73 74 pabilities.are.stored.as.JSON.st
33a0 72 69 6e 67 73 20 69 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 70 75 74 44 65 76 69 63 65 44 rings.in.<see.cref="InputDeviceD
33c0 65 73 63 72 69 70 74 69 6f 6e 2e 63 61 70 61 62 69 6c 69 74 69 65 73 22 2f 3e 2e 0d 0a 20 20 20 escription.capabilities"/>......
33e0 20 20 20 20 20 2f 2f 2f 20 41 20 6d 61 74 63 68 65 72 20 68 61 73 20 74 68 65 20 61 62 69 6c 69 .....///.A.matcher.has.the.abili
3400 74 79 20 74 6f 20 6d 61 74 63 68 20 73 70 65 63 69 66 69 63 20 70 72 6f 70 65 72 74 69 65 73 20 ty.to.match.specific.properties.
3420 66 72 6f 6d 20 74 68 65 20 4a 53 4f 4e 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f from.the.JSON.object..........//
3440 2f 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 20 74 68 65 20 63 61 70 61 62 69 6c 69 74 69 65 73 20 /.contained.in.the.capabilities.
3460 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f string...........///..........//
3480 2f 20 3c 65 78 61 6d 70 6c 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d /.<example>..........///.<code>.
34a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 2f 2f 20 54 68 65 20 64 65 73 63 72 69 70 74 69 6f 6e 20 .........///.//.The.description.
34c0 66 6f 72 20 61 20 48 49 44 20 77 69 6c 6c 20 75 73 75 61 6c 6c 79 20 68 61 76 65 20 61 20 48 49 for.a.HID.will.usually.have.a.HI
34e0 44 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f DDeviceDescriptor.in..........//
3500 2f 20 2f 2f 20 4a 53 4f 4e 20 66 6f 72 6d 61 74 20 66 6f 75 6e 64 20 6f 6e 20 69 74 73 20 49 6e /.//.JSON.format.found.on.its.In
3520 70 75 74 44 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 63 61 70 61 62 69 6c 69 74 69 65 putDeviceDescription.capabilitie
3540 73 2e 20 53 6f 2c 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 2f 2f 20 72 65 61 6c 2d 77 6f s..So,.a..........///.//.real-wo
3560 72 6c 64 20 64 65 76 69 63 65 20 64 65 73 63 72 69 70 74 69 6f 6e 20 63 6f 75 6c 64 20 6c 6f 6f rld.device.description.could.loo
3580 6b 20 74 68 65 20 65 71 75 69 76 61 6c 65 6e 74 20 6f 66 20 74 68 69 73 3a 0d 0a 20 20 20 20 20 k.the.equivalent.of.this:.......
35a0 20 20 20 2f 2f 2f 20 76 61 72 20 64 65 73 63 72 69 70 74 69 6f 6e 20 3d 20 6e 65 77 20 49 6e 70 ...///.var.description.=.new.Inp
35c0 75 74 44 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f utDeviceDescription..........///
35e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 69 6e 74 65 72 66 61 63 65 4e 61 6d .{..........///.....interfaceNam
3600 65 20 3d 20 22 48 49 44 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 63 61 70 61 e.=."HID",..........///.....capa
3620 62 69 6c 69 74 69 65 73 20 3d 20 6e 65 77 20 48 49 44 2e 48 49 44 44 65 76 69 63 65 44 65 73 63 bilities.=.new.HID.HIDDeviceDesc
3640 72 69 70 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 riptor..........///.....{.......
3660 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 76 65 6e 64 6f 72 49 64 20 3d 20 30 78 35 34 43 2c ...///.........vendorId.=.0x54C,
3680 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 70 72 6f 64 75 63 74 49 64 20 ..........///.........productId.
36a0 3d 20 30 78 39 43 43 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 7d 2e 54 6f 4a 73 6f =.0x9CC..........///.....}.ToJso
36c0 6e 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 7d 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f n()..........///.};..........///
36e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 2f 2f 20 57 65 20 63 61 6e 20 63 72 65 61 74 65 20 61 ..........///.//.We.can.create.a
3700 20 64 65 76 69 63 65 20 6d 61 74 63 68 65 72 20 74 68 61 74 20 6c 6f 6f 6b 73 20 66 6f 72 20 74 .device.matcher.that.looks.for.t
3720 68 6f 73 65 20 74 6f 20 70 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 hose.to.properties..........///.
3740 2f 2f 20 64 69 72 65 63 74 6c 79 20 69 6e 20 74 68 65 20 4a 53 4f 4e 20 6f 62 6a 65 63 74 2e 0d //.directly.in.the.JSON.object..
3760 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 65 77 20 49 6e 70 75 74 44 65 76 69 63 65 4d 61 74 63 .........///.new.InputDeviceMatc
3780 68 65 72 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 2e 57 69 74 68 43 61 70 61 her()..........///......WithCapa
37a0 62 69 6c 69 74 79 28 22 76 65 6e 64 6f 72 49 64 22 2c 20 30 78 35 34 43 29 0d 0a 20 20 20 20 20 bility("vendorId",.0x54C).......
37c0 20 20 20 2f 2f 2f 20 20 20 20 20 2e 57 69 74 68 43 61 70 61 62 69 6c 69 74 79 28 22 70 72 6f 64 ...///......WithCapability("prod
37e0 75 63 74 49 64 22 2c 20 30 78 39 43 43 29 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 uctId",.0x9CC);..........///.</c
3800 6f 64 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 65 78 61 6d 70 6c 65 3e 0d 0a 20 20 ode>..........///.</example>....
3820 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 50 72 6f 70 65 72 74 69 65 ......///..........///.Propertie
3840 73 20 69 6e 20 6e 65 73 74 65 64 20 6f 62 6a 65 63 74 73 20 63 61 6e 20 62 65 20 72 65 66 65 72 s.in.nested.objects.can.be.refer
3860 65 6e 63 65 64 20 62 79 20 73 65 70 61 72 61 74 69 6e 67 20 70 72 6f 70 65 72 74 69 65 73 0d 0a enced.by.separating.properties..
3880 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 3c 63 3e 2f 3c 2f 63 3e 20 61 6e 64 20 70 72 ........///.with.<c>/</c>.and.pr
38a0 6f 70 65 72 74 69 65 73 20 69 6e 20 61 72 72 61 79 73 20 63 61 6e 20 62 65 20 69 6e 64 65 78 65 operties.in.arrays.can.be.indexe
38c0 64 20 77 69 74 68 20 3c 63 3e 5b 2e 2e 5d 3c 2f 63 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f d.with.<c>[..]</c>...........///
38e0 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 61 6c 73 .</remarks>..........///.<seeals
3900 6f 20 63 72 65 66 3d 22 49 6e 70 75 74 44 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 63 o.cref="InputDeviceDescription.c
3920 61 70 61 62 69 6c 69 74 69 65 73 22 2f 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 apabilities"/>..........public.I
3940 6e 70 75 74 44 65 76 69 63 65 4d 61 74 63 68 65 72 20 57 69 74 68 43 61 70 61 62 69 6c 69 74 79 nputDeviceMatcher.WithCapability
3960 3c 54 56 61 6c 75 65 3e 28 73 74 72 69 6e 67 20 70 61 74 68 2c 20 54 56 61 6c 75 65 20 76 61 6c <TValue>(string.path,.TValue.val
3980 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 ue)..........{..............retu
39a0 72 6e 20 57 69 74 68 28 6e 65 77 20 49 6e 74 65 72 6e 65 64 53 74 72 69 6e 67 28 70 61 74 68 29 rn.With(new.InternedString(path)
39c0 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 ,.value);..........}............
39e0 70 72 69 76 61 74 65 20 49 6e 70 75 74 44 65 76 69 63 65 4d 61 74 63 68 65 72 20 57 69 74 68 28 private.InputDeviceMatcher.With(
3a00 49 6e 74 65 72 6e 65 64 53 74 72 69 6e 67 20 6b 65 79 2c 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 InternedString.key,.object.value
3a20 2c 20 62 6f 6f 6c 20 73 75 70 70 6f 72 74 52 65 67 65 78 20 3d 20 74 72 75 65 29 0d 0a 20 20 20 ,.bool.supportRegex.=.true).....
3a40 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 66 20 69 74 27 73 20 61 .....{..............//.If.it's.a
3a60 20 73 74 72 69 6e 67 2c 20 63 68 65 63 6b 20 77 68 65 74 68 65 72 20 69 74 27 73 20 61 20 72 65 .string,.check.whether.it's.a.re
3a80 67 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 75 70 70 6f 72 74 52 65 67 gex...............if.(supportReg
3aa0 65 78 20 26 26 20 76 61 6c 75 65 20 69 73 20 73 74 72 69 6e 67 20 73 74 72 29 0d 0a 20 20 20 20 ex.&&.value.is.string.str)......
3ac0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6d ........{..................var.m
3ae0 61 79 42 65 52 65 67 65 78 20 3d 20 21 73 74 72 2e 41 6c 6c 28 63 68 20 3d 3e 20 63 68 61 72 2e ayBeRegex.=.!str.All(ch.=>.char.
3b00 49 73 4c 65 74 74 65 72 4f 72 44 69 67 69 74 28 63 68 29 20 7c 7c 20 63 68 61 72 2e 49 73 57 68 IsLetterOrDigit(ch).||.char.IsWh
3b20 69 74 65 53 70 61 63 65 28 63 68 29 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 iteSpace(ch)).&&................
3b40 20 20 20 20 20 20 21 64 6f 75 62 6c 65 2e 54 72 79 50 61 72 73 65 28 73 74 72 2c 20 6f 75 74 20 ......!double.TryParse(str,.out.
3b60 76 61 72 20 5f 29 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 41 76 6f 69 64 20 27 2e var._);..............//.Avoid.'.
3b80 27 20 69 6e 20 66 6c 6f 61 74 73 20 66 6f 72 63 69 6e 67 20 74 68 65 20 76 61 6c 75 65 20 74 6f '.in.floats.forcing.the.value.to
3ba0 20 62 65 20 61 20 72 65 67 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .be.a.regex...................if
3bc0 20 28 6d 61 79 42 65 52 65 67 65 78 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(mayBeRegex)...................
3be0 20 20 20 76 61 6c 75 65 20 3d 20 6e 65 77 20 52 65 67 65 78 28 73 74 72 2c 20 52 65 67 65 78 4f ...value.=.new.Regex(str,.RegexO
3c00 70 74 69 6f 6e 73 2e 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ptions.IgnoreCase);.............
3c20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 41 64 64 20 74 6f 20 6c 69 73 74 .}................//.Add.to.list
3c40 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 72 65 73 75 6c 74 20 3d 20 74 68 69 73 ...............var.result.=.this
3c60 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 72 72 61 79 48 65 6c 70 65 72 73 2e 41 70 70 65 ;..............ArrayHelpers.Appe
3c80 6e 64 28 72 65 66 20 72 65 73 75 6c 74 2e 6d 5f 50 61 74 74 65 72 6e 73 2c 20 6e 65 77 20 4b 65 nd(ref.result.m_Patterns,.new.Ke
3ca0 79 56 61 6c 75 65 50 61 69 72 3c 49 6e 74 65 72 6e 65 64 53 74 72 69 6e 67 2c 20 6f 62 6a 65 63 yValuePair<InternedString,.objec
3cc0 74 3e 28 6b 65 79 2c 20 76 61 6c 75 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 t>(key,.value));..............re
3ce0 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 turn.result;..........}.........
3d00 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 ...///.<summary>..........///.Re
3d20 74 75 72 6e 20 74 68 65 20 6c 65 76 65 6c 20 6f 66 20 6d 61 74 63 68 69 6e 67 20 74 6f 20 74 68 turn.the.level.of.matching.to.th
3d40 65 20 67 69 76 65 6e 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 64 65 76 69 63 65 44 65 e.given.<paramref.name="deviceDe
3d60 73 63 72 69 70 74 69 6f 6e 22 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d scription"/>...........///.</sum
3d80 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 mary>..........///.<param.name="
3da0 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 22 3e 41 20 64 65 76 69 63 65 20 64 65 73 63 deviceDescription">A.device.desc
3dc0 72 69 70 74 69 6f 6e 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 ription.</param>..........///.<r
3de0 65 74 75 72 6e 73 3e 41 20 73 63 6f 72 65 20 75 73 75 61 6c 6c 79 20 69 6e 20 74 68 65 20 72 61 eturns>A.score.usually.in.the.ra
3e00 6e 67 65 20 62 65 74 77 65 65 6e 20 30 20 61 6e 64 20 31 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a nge.between.0.and.1.</returns>..
3e20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f ........///.<remarks>........../
3e40 2f 2f 20 54 68 65 20 61 6c 67 6f 72 69 74 68 6d 20 63 6f 6d 70 75 74 65 73 20 61 20 73 63 6f 72 //.The.algorithm.computes.a.scor
3e60 65 20 6f 66 20 68 6f 77 20 77 65 6c 6c 20 74 68 65 20 6d 61 74 63 68 65 72 20 6d 61 74 63 68 65 e.of.how.well.the.matcher.matche
3e80 73 20 74 68 65 20 67 69 76 65 6e 20 64 65 73 63 72 69 70 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 s.the.given.description.........
3ea0 20 20 2f 2f 2f 20 45 73 73 65 6e 74 69 61 6c 6c 79 2c 20 61 20 6d 61 74 63 68 65 72 20 74 68 61 ..///.Essentially,.a.matcher.tha
3ec0 74 20 6d 61 74 63 68 65 73 20 65 76 65 72 79 20 73 69 6e 67 6c 65 20 70 72 6f 70 65 72 74 79 20 t.matches.every.single.property.
3ee0 74 68 61 74 20 69 73 20 70 72 65 73 65 6e 74 20 28 61 73 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 that.is.present.(as.in..........
3f00 2f 2f 2f 20 6e 6f 74 20 3c 63 3e 6e 75 6c 6c 3c 2f 63 3e 20 61 6e 64 20 6e 6f 74 20 61 6e 20 65 ///.not.<c>null</c>.and.not.an.e
3f20 6d 70 74 79 20 73 74 72 69 6e 67 29 20 69 6e 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 mpty.string).in.<paramref.name="
3f40 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 22 2f 3e 20 72 65 63 65 69 76 65 73 0d 0a 20 deviceDescription"/>.receives...
3f60 20 20 20 20 20 20 20 2f 2f 2f 20 61 20 73 63 6f 72 65 20 6f 66 20 31 2c 20 61 20 6d 61 74 63 68 .......///.a.score.of.1,.a.match
3f80 65 72 20 74 68 61 74 20 6d 61 74 63 68 65 73 20 6e 6f 6e 65 20 61 20 73 63 6f 72 65 20 6f 66 20 er.that.matches.none.a.score.of.
3fa0 30 2e 20 4d 61 74 63 68 65 73 20 74 68 61 74 20 6d 61 74 63 68 20 6f 6e 6c 79 20 61 20 73 75 62 0..Matches.that.match.only.a.sub
3fc0 73 65 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 63 65 69 76 65 20 61 20 73 63 6f 72 65 set..........///.receive.a.score
3fe0 20 69 6e 2d 62 65 74 77 65 65 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 .in-between...........///.......
4000 20 20 20 2f 2f 2f 20 41 6e 20 65 78 63 65 70 74 69 6f 6e 20 74 6f 20 74 68 69 73 20 61 72 65 20 ...///.An.exception.to.this.are.
4020 63 61 70 61 62 69 6c 69 74 69 65 73 2e 20 45 76 65 72 79 20 73 69 6e 67 6c 65 20 6d 61 74 63 68 capabilities..Every.single.match
4040 20 6f 66 20 61 20 63 61 70 61 62 69 6c 69 74 79 20 69 73 20 63 6f 75 6e 74 65 64 0d 0a 20 20 20 .of.a.capability.is.counted.....
4060 20 20 20 20 20 2f 2f 2f 20 61 73 20 6f 6e 65 20 70 72 6f 70 65 72 74 79 20 6d 61 74 63 68 20 61 .....///.as.one.property.match.a
4080 6e 64 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 73 63 6f 72 65 2e 20 54 68 69 73 20 6d 65 61 6e nd.added.to.the.score..This.mean
40a0 73 20 74 68 61 74 20 6d 61 74 63 68 65 72 73 20 74 68 61 74 20 6d 61 74 63 68 0d 0a 20 20 20 20 s.that.matchers.that.match......
40c0 20 20 20 20 2f 2f 2f 20 6f 6e 20 6d 75 6c 74 69 70 6c 65 20 63 61 70 61 62 69 6c 69 74 69 65 73 ....///.on.multiple.capabilities
40e0 20 6d 61 79 20 61 63 74 75 61 6c 6c 79 20 61 63 68 69 65 76 65 20 61 20 73 63 6f 72 65 20 26 67 .may.actually.achieve.a.score.&g
4100 74 3b 31 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c t;1...........///..........///.<
4120 65 78 61 6d 70 6c 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 63 6f 64 65 3e 0d 0a 20 20 example>..........///.<code>....
4140 20 20 20 20 20 20 2f 2f 2f 20 76 61 72 20 64 65 73 63 72 69 70 74 69 6f 6e 20 3d 20 6e 65 77 20 ......///.var.description.=.new.
4160 49 6e 70 75 74 44 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 InputDeviceDescription..........
4180 2f 2f 2f 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 69 6e 74 65 72 66 61 63 65 ///.{..........///.....interface
41a0 4e 61 6d 65 20 3d 20 22 48 49 44 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 70 Name.=."HID",..........///.....p
41c0 72 6f 64 75 63 74 20 3d 20 22 4d 61 64 65 55 70 44 65 76 69 63 65 22 2c 0d 0a 20 20 20 20 20 20 roduct.=."MadeUpDevice",........
41e0 20 20 2f 2f 2f 20 20 20 20 20 63 61 70 61 62 69 6c 69 74 69 65 73 20 3d 20 6e 65 77 20 48 49 44 ..///.....capabilities.=.new.HID
4200 2e 48 49 44 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f .HIDDeviceDescriptor..........//
4220 2f 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 76 65 6e /.....{..........///.........ven
4240 64 6f 72 49 64 20 3d 20 30 78 41 42 43 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 dorId.=.0xABC,..........///.....
4260 20 20 20 20 70 72 6f 64 75 63 74 49 64 20 3d 20 30 78 44 45 46 0d 0a 20 20 20 20 20 20 20 20 2f ....productId.=.0xDEF........../
4280 2f 2f 20 20 20 20 20 7d 2e 54 6f 4a 73 6f 6e 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 7d //.....}.ToJson()..........///.}
42a0 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 2f 2f 20 54 ;..........///..........///.//.T
42c0 68 69 73 20 6d 61 74 63 68 65 72 20 77 69 6c 6c 20 61 63 68 69 65 76 65 20 61 20 73 63 6f 72 65 his.matcher.will.achieve.a.score
42e0 20 6f 66 20 30 2e 36 36 36 20 28 32 2f 33 29 20 61 73 20 69 74 0d 0a 20 20 20 20 20 20 20 20 2f .of.0.666.(2/3).as.it........../
4300 2f 2f 20 2f 2f 20 6d 61 74 63 68 65 73 20 74 77 6f 20 6f 75 74 20 6f 66 20 74 68 72 65 65 20 61 //.//.matches.two.out.of.three.a
4320 76 61 69 6c 61 62 6c 65 20 70 72 6f 70 65 72 74 69 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f vailable.properties...........//
4340 2f 20 6e 65 77 20 49 6e 70 75 74 44 65 76 69 63 65 4d 61 74 63 68 65 72 28 29 0d 0a 20 20 20 20 /.new.InputDeviceMatcher()......
4360 20 20 20 20 2f 2f 2f 20 20 20 20 20 2e 57 69 74 68 49 6e 74 65 72 66 61 63 65 28 22 48 49 44 22 ....///......WithInterface("HID"
4380 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 2e 57 69 74 68 50 72 6f 64 75 63 74 28 )..........///......WithProduct(
43a0 22 4d 61 64 65 55 70 44 65 76 69 63 65 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 "MadeUpDevice");..........///...
43c0 20 20 20 20 20 20 20 2f 2f 2f 20 2f 2f 20 54 68 69 73 20 6d 61 74 63 68 65 72 20 77 69 6c 6c 20 .......///.//.This.matcher.will.
43e0 61 63 68 69 65 76 65 20 61 20 73 63 6f 72 65 20 6f 66 20 31 20 64 65 73 70 69 74 65 20 6e 6f 74 achieve.a.score.of.1.despite.not
4400 20 6d 61 74 63 68 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 2f 2f 20 27 70 72 6f 64 75 .matching..........///.//.'produ
4420 63 74 27 2e 20 54 68 65 20 72 65 61 73 6f 6e 20 69 73 20 74 68 61 74 20 69 74 20 6d 61 74 63 68 ct'..The.reason.is.that.it.match
4440 65 73 20 74 77 6f 20 6b 65 79 73 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 2f 2f 20 27 es.two.keys.in..........///.//.'
4460 63 61 70 61 62 69 6c 69 74 69 65 73 27 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 65 77 20 capabilities'...........///.new.
4480 49 6e 70 75 74 44 65 76 69 63 65 4d 61 74 63 68 65 72 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f InputDeviceMatcher()..........//
44a0 2f 20 20 20 20 20 2e 57 69 74 68 49 6e 74 65 72 66 61 63 65 28 22 48 49 44 22 29 0d 0a 20 20 20 /......WithInterface("HID").....
44c0 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 2e 57 69 74 68 43 61 70 61 62 69 6c 69 74 79 28 22 76 65 .....///......WithCapability("ve
44e0 6e 64 6f 72 49 64 22 2c 20 30 78 41 42 43 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 ndorId",.0xABC)..........///....
4500 20 2e 57 69 74 68 43 61 70 61 62 69 6c 69 74 79 28 22 70 72 6f 64 75 63 74 49 64 22 2c 20 30 78 ..WithCapability("productId",.0x
4520 44 45 46 29 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 63 6f 64 65 3e 0d 0a 20 20 20 20 DEF);..........///.</code>......
4540 20 20 20 20 2f 2f 2f 20 3c 2f 65 78 61 6d 70 6c 65 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 ....///.</example>..........///.
4560 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 66 6c 6f 61 74 </remarks>..........public.float
4580 20 4d 61 74 63 68 50 65 72 63 65 6e 74 61 67 65 28 49 6e 70 75 74 44 65 76 69 63 65 44 65 73 63 .MatchPercentage(InputDeviceDesc
45a0 72 69 70 74 69 6f 6e 20 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 29 0d 0a 20 20 20 20 ription.deviceDescription)......
45c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6d 70 74 79 29 0d 0a 20 ....{..............if.(empty)...
45e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a 0d 0a 20 20 20 20 ...............return.0;........
4600 20 20 20 20 20 20 20 20 2f 2f 20 47 6f 20 74 68 72 6f 75 67 68 20 61 6c 6c 20 70 61 74 74 65 72 ........//.Go.through.all.patter
4620 6e 73 2e 20 53 63 6f 72 65 20 69 73 20 30 20 69 66 20 61 6e 79 20 6f 66 20 74 68 65 20 70 61 74 ns..Score.is.0.if.any.of.the.pat
4640 74 65 72 6e 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 65 73 6e 27 74 20 6d 61 terns..............//.doesn't.ma
4660 74 63 68 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6e 75 6d 50 61 74 74 65 72 6e tch...............var.numPattern
4680 73 20 3d 20 6d 5f 50 61 74 74 65 72 6e 73 2e 4c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20 20 20 20 s.=.m_Patterns.Length;..........
46a0 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 6e 75 6d 50 61 74 74 65 ....for.(var.i.=.0;.i.<.numPatte
46c0 72 6e 73 3b 20 2b 2b 69 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 rns;.++i)..............{........
46e0 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6b 65 79 20 3d 20 6d 5f 50 61 74 74 65 72 6e 73 5b 69 ..........var.key.=.m_Patterns[i
4700 5d 2e 4b 65 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 70 61 74 74 ].Key;..................var.patt
4720 65 72 6e 20 3d 20 6d 5f 50 61 74 74 65 72 6e 73 5b 69 5d 2e 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20 ern.=.m_Patterns[i].Value;......
4740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79 20 3d 3d 20 6b 49 6e 74 65 72 66 ..............if.(key.==.kInterf
4760 61 63 65 4b 65 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 aceKey)..................{......
4780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69 6e 67 2e 49 73 4e 75 6c ................if.(string.IsNul
47a0 6c 4f 72 45 6d 70 74 79 28 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 69 6e 74 65 72 lOrEmpty(deviceDescription.inter
47c0 66 61 63 65 4e 61 6d 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 faceName).......................
47e0 20 20 20 7c 7c 20 21 4d 61 74 63 68 53 69 6e 67 6c 65 50 72 6f 70 65 72 74 79 28 70 61 74 74 65 ...||.!MatchSingleProperty(patte
4800 72 6e 2c 20 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 69 6e 74 65 72 66 61 63 65 4e rn,.deviceDescription.interfaceN
4820 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 ame))..........................r
4840 65 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 eturn.0;..................}.....
4860 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 6b 44 65 .............else.if.(key.==.kDe
4880 76 69 63 65 43 6c 61 73 73 4b 65 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b viceClassKey)..................{
48a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69 6e 67 ......................if.(string
48c0 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e .IsNullOrEmpty(deviceDescription
48e0 2e 64 65 76 69 63 65 43 6c 61 73 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .deviceClass)...................
4900 20 20 20 20 20 20 20 7c 7c 20 21 4d 61 74 63 68 53 69 6e 67 6c 65 50 72 6f 70 65 72 74 79 28 70 .......||.!MatchSingleProperty(p
4920 61 74 74 65 72 6e 2c 20 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 64 65 76 69 63 65 attern,.deviceDescription.device
4940 43 6c 61 73 73 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Class)).........................
4960 20 72 65 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 .return.0;..................}...
4980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 6b ...............else.if.(key.==.k
49a0 4d 61 6e 75 66 61 63 74 75 72 65 72 4b 65 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ManufacturerKey)................
49c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 ..{......................if.(str
49e0 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 65 76 69 63 65 44 65 73 63 72 69 70 74 ing.IsNullOrEmpty(deviceDescript
4a00 69 6f 6e 2e 6d 61 6e 75 66 61 63 74 75 72 65 72 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ion.manufacturer)...............
4a20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 21 4d 61 74 63 68 53 69 6e 67 6c 65 50 72 6f 70 65 72 ...........||.!MatchSingleProper
4a40 74 79 28 70 61 74 74 65 72 6e 2c 20 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 6d 61 ty(pattern,.deviceDescription.ma
4a60 6e 75 66 61 63 74 75 72 65 72 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nufacturer))....................
4a80 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ......return.0;.................
4aa0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 6b 65 79 .}..................else.if.(key
4ac0 20 3d 3d 20 6b 50 72 6f 64 75 63 74 4b 65 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .==.kProductKey)................
4ae0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 ..{......................if.(str
4b00 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 65 76 69 63 65 44 65 73 63 72 69 70 74 ing.IsNullOrEmpty(deviceDescript
4b20 69 6f 6e 2e 70 72 6f 64 75 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ion.product)....................
4b40 20 20 20 20 20 20 7c 7c 20 21 4d 61 74 63 68 53 69 6e 67 6c 65 50 72 6f 70 65 72 74 79 28 70 61 ......||.!MatchSingleProperty(pa
4b60 74 74 65 72 6e 2c 20 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 70 72 6f 64 75 63 74 ttern,.deviceDescription.product
4b80 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 ))..........................retu
4ba0 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 rn.0;..................}........
4bc0 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 6b 56 65 72 73 69 ..........else.if.(key.==.kVersi
4be0 6f 6e 4b 65 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 onKey)..................{.......
4c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69 6e 67 2e 49 73 4e 75 6c 6c ...............if.(string.IsNull
4c20 4f 72 45 6d 70 74 79 28 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 76 65 72 73 69 6f OrEmpty(deviceDescription.versio
4c40 6e 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 21 n)..........................||.!
4c60 4d 61 74 63 68 53 69 6e 67 6c 65 50 72 6f 70 65 72 74 79 28 70 61 74 74 65 72 6e 2c 20 64 65 76 MatchSingleProperty(pattern,.dev
4c80 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 76 65 72 73 69 6f 6e 29 29 0d 0a 20 20 20 20 20 20 iceDescription.version))........
4ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a 20 20 20 ..................return.0;.....
4cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .............}..................
4ce0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 else..................{.........
4d00 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 61 70 61 62 69 6c 69 74 69 65 73 20 6d 61 74 .............//.Capabilities.mat
4d20 63 68 2e 20 54 61 6b 65 20 74 68 65 20 6b 65 79 20 61 73 20 61 20 70 61 74 68 20 69 6e 74 6f 20 ch..Take.the.key.as.a.path.into.
4d40 74 68 65 20 4a 53 4f 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f the.JSON......................//
4d60 20 6f 62 6a 65 63 74 20 61 6e 64 20 6d 61 74 63 68 20 74 68 65 20 76 61 6c 75 65 20 66 6f 75 6e .object.and.match.the.value.foun
4d80 64 20 61 74 20 74 68 65 20 67 69 76 65 6e 20 70 61 74 68 2e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 d.at.the.given.path.............
4da0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 ............if.(string.IsNullOrE
4dc0 6d 70 74 79 28 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 63 61 70 61 62 69 6c 69 74 mpty(deviceDescription.capabilit
4de0 69 65 73 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 ies))..........................r
4e00 65 74 75 72 6e 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 eturn.0;........................
4e20 76 61 72 20 67 72 61 70 68 20 3d 20 6e 65 77 20 4a 73 6f 6e 50 61 72 73 65 72 28 64 65 76 69 63 var.graph.=.new.JsonParser(devic
4e40 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 63 61 70 61 62 69 6c 69 74 69 65 73 29 3b 0d 0a 20 20 20 eDescription.capabilities);.....
4e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 67 72 61 70 68 2e 4e 61 76 69 .................if.(!graph.Navi
4e80 67 61 74 65 54 6f 50 72 6f 70 65 72 74 79 28 6b 65 79 2e 54 6f 53 74 72 69 6e 67 28 29 29 20 7c gateToProperty(key.ToString()).|
4ea0 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 67 72 61 70 |..........................!grap
4ec0 68 2e 43 75 72 72 65 6e 74 50 72 6f 70 65 72 74 79 48 61 73 56 61 6c 75 65 45 71 75 61 6c 54 6f h.CurrentPropertyHasValueEqualTo
4ee0 28 6e 65 77 20 4a 73 6f 6e 50 61 72 73 65 72 2e 4a 73 6f 6e 56 61 6c 75 65 20 7b 20 74 79 70 65 (new.JsonParser.JsonValue.{.type
4f00 20 3d 20 4a 73 6f 6e 50 61 72 73 65 72 2e 4a 73 6f 6e 56 61 6c 75 65 54 79 70 65 2e 41 6e 79 2c .=.JsonParser.JsonValueType.Any,
4f20 20 61 6e 79 56 61 6c 75 65 20 3d 20 70 61 74 74 65 72 6e 7d 29 29 0d 0a 20 20 20 20 20 20 20 20 .anyValue.=.pattern}))..........
4f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 ................return.0;.......
4f60 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 ...........}..............}.....
4f80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 41 6c 6c 20 70 61 74 74 65 72 6e 73 20 6d 61 74 63 68 ...........//.All.patterns.match
4fa0 65 64 2e 20 4f 75 72 20 73 63 6f 72 65 20 69 73 20 64 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74 ed..Our.score.is.determined.by.t
4fc0 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 he.number.of.properties.........
4fe0 20 20 20 20 20 2f 2f 20 77 65 20 6d 61 74 63 68 65 64 20 61 67 61 69 6e 73 74 2e 0d 0a 20 20 20 .....//.we.matched.against......
5000 20 20 20 20 20 20 20 20 20 76 61 72 20 70 72 6f 70 65 72 74 79 43 6f 75 6e 74 49 6e 44 65 73 63 .........var.propertyCountInDesc
5020 72 69 70 74 69 6f 6e 20 3d 20 47 65 74 4e 75 6d 50 72 6f 70 65 72 74 69 65 73 49 6e 28 64 65 76 ription.=.GetNumPropertiesIn(dev
5040 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 iceDescription);..............va
5060 72 20 73 63 6f 72 65 50 65 72 50 72 6f 70 65 72 74 79 20 3d 20 31 2e 30 66 20 2f 20 70 72 6f 70 r.scorePerProperty.=.1.0f./.prop
5080 65 72 74 79 43 6f 75 6e 74 49 6e 44 65 73 63 72 69 70 74 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 ertyCountInDescription;.........
50a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6d 50 61 74 74 65 72 6e 73 20 2a 20 73 63 6f 72 .......return.numPatterns.*.scor
50c0 65 50 65 72 50 72 6f 70 65 72 74 79 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 ePerProperty;..........}........
50e0 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 4d 61 74 63 68 53 69 6e ....private.static.bool.MatchSin
5100 67 6c 65 50 72 6f 70 65 72 74 79 28 6f 62 6a 65 63 74 20 70 61 74 74 65 72 6e 2c 20 73 74 72 69 gleProperty(object.pattern,.stri
5120 6e 67 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 ng.value)..........{............
5140 20 20 2f 2f 20 53 74 72 69 6e 67 20 6d 61 74 63 68 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ..//.String.match...............
5160 69 66 20 28 70 61 74 74 65 72 6e 20 69 73 20 73 74 72 69 6e 67 20 73 74 72 29 0d 0a 20 20 20 20 if.(pattern.is.string.str)......
5180 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 74 72 69 6e 67 2e 43 6f 6d 70 61 72 ............return.string.Compar
51a0 65 28 73 74 72 2c 20 76 61 6c 75 65 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 49 e(str,.value,.StringComparison.I
51c0 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 49 67 6e 6f 72 65 43 61 73 65 29 20 3d 3d 20 30 3b nvariantCultureIgnoreCase).==.0;
51e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 52 65 67 65 78 20 6d 61 74 63 68 2e 0d ................//.Regex.match..
5200 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61 74 74 65 72 6e 20 69 73 20 52 65 67 65 .............if.(pattern.is.Rege
5220 78 20 72 65 67 65 78 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e x.regex)..................return
5240 20 72 65 67 65 78 2e 49 73 4d 61 74 63 68 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 .regex.IsMatch(value);..........
5260 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a ......return.false;..........}..
5280 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69 6e 74 20 47 65 74 ..........private.static.int.Get
52a0 4e 75 6d 50 72 6f 70 65 72 74 69 65 73 49 6e 28 49 6e 70 75 74 44 65 76 69 63 65 44 65 73 63 72 NumPropertiesIn(InputDeviceDescr
52c0 69 70 74 69 6f 6e 20 64 65 73 63 72 69 70 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a iption.description)..........{..
52e0 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 63 6f 75 6e 74 20 3d 20 30 3b 0d 0a 20 20 20 20 ............var.count.=.0;......
5300 20 20 20 20 20 20 20 20 69 66 20 28 21 73 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 ........if.(!string.IsNullOrEmpt
5320 79 28 64 65 73 63 72 69 70 74 69 6f 6e 2e 69 6e 74 65 72 66 61 63 65 4e 61 6d 65 29 29 0d 0a 20 y(description.interfaceName))...
5340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 75 6e 74 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 ...............count.+=.1;......
5360 20 20 20 20 20 20 20 20 69 66 20 28 21 73 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 ........if.(!string.IsNullOrEmpt
5380 79 28 64 65 73 63 72 69 70 74 69 6f 6e 2e 64 65 76 69 63 65 43 6c 61 73 73 29 29 0d 0a 20 20 20 y(description.deviceClass)).....
53a0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 75 6e 74 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 20 .............count.+=.1;........
53c0 20 20 20 20 20 20 69 66 20 28 21 73 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 ......if.(!string.IsNullOrEmpty(
53e0 64 65 73 63 72 69 70 74 69 6f 6e 2e 6d 61 6e 75 66 61 63 74 75 72 65 72 29 29 0d 0a 20 20 20 20 description.manufacturer))......
5400 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 75 6e 74 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20 ............count.+=.1;.........
5420 20 20 20 20 20 69 66 20 28 21 73 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 .....if.(!string.IsNullOrEmpty(d
5440 65 73 63 72 69 70 74 69 6f 6e 2e 70 72 6f 64 75 63 74 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 escription.product))............
5460 20 20 20 20 20 20 63 6f 75 6e 74 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 ......count.+=.1;..............i
5480 66 20 28 21 73 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 65 73 63 72 69 70 f.(!string.IsNullOrEmpty(descrip
54a0 74 69 6f 6e 2e 76 65 72 73 69 6f 6e 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tion.version))..................
54c0 63 6f 75 6e 74 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 73 74 count.+=.1;..............if.(!st
54e0 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 65 73 63 72 69 70 74 69 6f 6e 2e 63 ring.IsNullOrEmpty(description.c
5500 61 70 61 62 69 6c 69 74 69 65 73 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 apabilities))..................c
5520 6f 75 6e 74 20 2b 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 ount.+=.1;..............return.c
5540 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 ount;..........}............///.
5560 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 50 72 6f 64 75 63 65 20 61 <summary>..........///.Produce.a
5580 20 6d 61 74 63 68 65 72 20 74 68 61 74 20 6d 61 74 63 68 65 73 20 74 68 65 20 67 69 76 65 6e 20 .matcher.that.matches.the.given.
55a0 64 65 76 69 63 65 20 64 65 73 63 72 69 70 74 69 6f 6e 20 76 65 72 62 61 74 69 6d 2e 0d 0a 20 20 device.description.verbatim.....
55c0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f ......///.</summary>..........//
55e0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e /.<param.name="deviceDescription
5600 22 3e 41 20 64 65 76 69 63 65 20 64 65 73 63 72 69 70 74 69 6f 6e 2e 3c 2f 70 61 72 61 6d 3e 0d ">A.device.description.</param>.
5620 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41 20 6d 61 74 63 68 65 72 20 .........///.<returns>A.matcher.
5640 74 68 61 74 20 6d 61 74 63 68 65 73 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 64 65 76 that.matches.<paramref.name="dev
5660 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 22 2f 3e 20 65 78 61 63 74 6c 79 2e 3c 2f 72 65 74 75 iceDescription"/>.exactly.</retu
5680 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 rns>..........///.<remarks>.....
56a0 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 63 61 6e 20 62 65 20 75 73 65 64 .....///.This.method.can.be.used
56c0 20 74 6f 20 70 72 6f 64 75 63 65 20 61 20 6d 61 74 63 68 65 72 20 66 6f 72 20 61 6e 20 65 78 69 .to.produce.a.matcher.for.an.exi
56e0 73 74 69 6e 67 20 64 65 76 69 63 65 20 64 65 73 63 72 69 70 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 sting.device.description,.......
5700 20 20 20 2f 2f 2f 20 65 2e 67 2e 20 77 68 65 6e 20 77 72 69 74 69 6e 67 20 61 20 6c 61 79 6f 75 ...///.e.g..when.writing.a.layou
5720 74 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 70 75 74 43 6f 6e 74 72 6f 6c 4c 61 79 6f 75 74 2e t.<see.cref="InputControlLayout.
5740 42 75 69 6c 64 65 72 22 2f 3e 20 74 68 61 74 20 70 72 6f 64 75 63 65 73 0d 0a 20 20 20 20 20 20 Builder"/>.that.produces........
5760 20 20 2f 2f 2f 20 6c 61 79 6f 75 74 73 20 66 6f 72 20 64 65 76 69 63 65 73 20 6f 6e 20 74 68 65 ..///.layouts.for.devices.on.the
5780 20 66 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 .fly...........///.</remarks>...
57a0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e 70 75 74 44 65 76 69 63 65 .......public.static.InputDevice
57c0 4d 61 74 63 68 65 72 20 46 72 6f 6d 44 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 28 49 6e Matcher.FromDeviceDescription(In
57e0 70 75 74 44 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 20 64 65 76 69 63 65 44 65 73 63 72 putDeviceDescription.deviceDescr
5800 69 70 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 iption)..........{..............
5820 76 61 72 20 6d 61 74 63 68 65 72 20 3d 20 6e 65 77 20 49 6e 70 75 74 44 65 76 69 63 65 4d 61 74 var.matcher.=.new.InputDeviceMat
5840 63 68 65 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 73 74 72 69 6e 67 cher();..............if.(!string
5860 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e .IsNullOrEmpty(deviceDescription
5880 2e 69 6e 74 65 72 66 61 63 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .interfaceName))................
58a0 20 20 6d 61 74 63 68 65 72 20 3d 20 6d 61 74 63 68 65 72 2e 57 69 74 68 49 6e 74 65 72 66 61 63 ..matcher.=.matcher.WithInterfac
58c0 65 28 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 69 6e 74 65 72 66 61 63 65 4e 61 6d e(deviceDescription.interfaceNam
58e0 65 2c 20 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 73 74 72 e,.false);..............if.(!str
5900 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 65 76 69 63 65 44 65 73 63 72 69 70 74 ing.IsNullOrEmpty(deviceDescript
5920 69 6f 6e 2e 64 65 76 69 63 65 43 6c 61 73 73 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ion.deviceClass))...............
5940 20 20 20 6d 61 74 63 68 65 72 20 3d 20 6d 61 74 63 68 65 72 2e 57 69 74 68 44 65 76 69 63 65 43 ...matcher.=.matcher.WithDeviceC
5960 6c 61 73 73 28 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 64 65 76 69 63 65 43 6c 61 lass(deviceDescription.deviceCla
5980 73 73 2c 20 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 73 74 ss,.false);..............if.(!st
59a0 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 65 76 69 63 65 44 65 73 63 72 69 70 ring.IsNullOrEmpty(deviceDescrip
59c0 74 69 6f 6e 2e 6d 61 6e 75 66 61 63 74 75 72 65 72 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 tion.manufacturer)).............
59e0 20 20 20 20 20 6d 61 74 63 68 65 72 20 3d 20 6d 61 74 63 68 65 72 2e 57 69 74 68 4d 61 6e 75 66 .....matcher.=.matcher.WithManuf
5a00 61 63 74 75 72 65 72 28 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 6d 61 6e 75 66 61 acturer(deviceDescription.manufa
5a20 63 74 75 72 65 72 2c 20 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 cturer,.false);..............if.
5a40 28 21 73 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 65 76 69 63 65 44 65 73 (!string.IsNullOrEmpty(deviceDes
5a60 63 72 69 70 74 69 6f 6e 2e 70 72 6f 64 75 63 74 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 cription.product))..............
5a80 20 20 20 20 6d 61 74 63 68 65 72 20 3d 20 6d 61 74 63 68 65 72 2e 57 69 74 68 50 72 6f 64 75 63 ....matcher.=.matcher.WithProduc
5aa0 74 28 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 70 72 6f 64 75 63 74 2c 20 66 61 6c t(deviceDescription.product,.fal
5ac0 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 73 74 72 69 6e 67 2e 49 73 se);..............if.(!string.Is
5ae0 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 76 65 NullOrEmpty(deviceDescription.ve
5b00 72 73 69 6f 6e 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 72 rsion))..................matcher
5b20 20 3d 20 6d 61 74 63 68 65 72 2e 57 69 74 68 56 65 72 73 69 6f 6e 28 64 65 76 69 63 65 44 65 73 .=.matcher.WithVersion(deviceDes
5b40 63 72 69 70 74 69 6f 6e 2e 76 65 72 73 69 6f 6e 2c 20 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 cription.version,.false);.......
5b60 20 20 20 20 20 20 20 2f 2f 20 57 65 20 64 6f 6e 27 74 20 69 6e 63 6c 75 64 65 20 63 61 70 61 62 .......//.We.don't.include.capab
5b80 69 6c 69 74 69 65 73 20 69 6e 20 74 68 69 73 20 63 6f 6e 76 65 72 73 69 6f 6e 2e 0d 0a 20 20 20 ilities.in.this.conversion......
5ba0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 61 74 63 68 65 72 3b 0d 0a 20 20 20 20 20 20 .........return.matcher;........
5bc0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 ..}............///.<summary>....
5be0 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 20 61 20 73 74 72 69 6e 67 20 72 65 70 72 65 73 ......///.Return.a.string.repres
5c00 65 6e 74 61 74 69 6f 6e 20 75 73 65 66 75 6c 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67 2e 20 4c entation.useful.for.debugging..L
5c20 69 73 74 73 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d ists.the..........///.<see.cref=
5c40 22 70 61 74 74 65 72 6e 73 22 2f 3e 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 20 74 68 65 20 6d 61 "patterns"/>.contained.in.the.ma
5c60 74 63 68 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a tcher...........///.</summary>..
5c80 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41 20 73 74 72 69 6e 67 20 72 65 ........///.<returns>A.string.re
5ca0 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 6d 61 74 63 68 65 72 2e 3c 2f 72 65 presentation.of.the.matcher.</re
5cc0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 turns>..........public.override.
5ce0 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 string.ToString()..........{....
5d00 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6d 70 74 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 ..........if.(empty)............
5d20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 3c 65 6d 70 74 79 3e 22 3b 0d 0a 0d 0a 20 20 20 20 20 ......return."<empty>";.........
5d40 20 20 20 20 20 20 20 76 61 72 20 72 65 73 75 6c 74 20 3d 20 73 74 72 69 6e 67 2e 45 6d 70 74 79 .......var.result.=.string.Empty
5d60 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 76 61 72 20 70 61 74 74 ;..............foreach.(var.patt
5d80 65 72 6e 20 69 6e 20 6d 5f 50 61 74 74 65 72 6e 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ern.in.m_Patterns)..............
5da0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 2e 4c 65 {..................if.(result.Le
5dc0 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 ngth.>.0)......................r
5de0 65 73 75 6c 74 20 2b 3d 20 24 22 2c 7b 70 61 74 74 65 72 6e 2e 4b 65 79 7d 3d 7b 70 61 74 74 65 esult.+=.$",{pattern.Key}={patte
5e00 72 6e 2e 56 61 6c 75 65 7d 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 rn.Value}";..................els
5e20 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 2b 3d e......................result.+=
5e40 20 24 22 7b 70 61 74 74 65 72 6e 2e 4b 65 79 7d 3d 7b 70 61 74 74 65 72 6e 2e 56 61 6c 75 65 7d .$"{pattern.Key}={pattern.Value}
5e60 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ";..............}...............
5e80 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 .return.result;..........}......
5ea0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f ......///.<summary>..........///
5ec0 20 54 65 73 74 20 77 68 65 74 68 65 72 20 74 68 69 73 20 6d 61 74 63 68 65 72 20 69 73 20 65 71 .Test.whether.this.matcher.is.eq
5ee0 75 69 76 61 6c 65 6e 74 20 74 6f 20 74 68 65 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 uivalent.to.the.<paramref.name="
5f00 6f 74 68 65 72 22 2f 3e 20 6d 61 74 63 68 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c other"/>.matcher...........///.<
5f20 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 /summary>..........///.<param.na
5f40 6d 65 3d 22 6f 74 68 65 72 22 3e 41 6e 6f 74 68 65 72 20 64 65 76 69 63 65 20 6d 61 74 63 68 65 me="other">Another.device.matche
5f60 72 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 r.</param>..........///.<returns
5f80 3e 54 72 75 65 20 69 66 20 74 68 65 20 74 77 6f 20 6d 61 74 63 68 65 72 73 20 61 72 65 20 65 71 >True.if.the.two.matchers.are.eq
5fa0 75 69 76 61 6c 65 6e 74 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f uivalent.</returns>..........///
5fc0 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 77 6f 20 6d 61 74 63 .<remarks>..........///.Two.matc
5fe0 68 65 72 73 20 61 72 65 20 65 71 75 69 76 61 6c 65 6e 74 20 69 66 20 74 68 65 79 20 63 6f 6e 74 hers.are.equivalent.if.they.cont
6000 61 69 6e 20 74 68 65 20 73 61 6d 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 74 74 65 72 6e 73 20 ain.the.same.number.of.patterns.
6020 61 6e 64 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 61 6d 65 20 70 61 74 74 65 72 and.the..........///.same.patter
6040 6e 20 6f 63 63 75 72 73 20 69 6e 20 65 61 63 68 20 6f 66 20 74 68 65 20 6d 61 74 63 68 65 72 73 n.occurs.in.each.of.the.matchers
6060 2e 20 4f 72 64 65 72 20 6f 66 20 74 68 65 20 70 61 74 74 65 72 6e 73 20 64 6f 65 73 20 6e 6f 74 ..Order.of.the.patterns.does.not
6080 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 61 74 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f ..........///.matter.........../
60a0 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 20 20 20 20 5b 53 79 73 74 65 6d 2e 44 //.</remarks>..........[System.D
60c0 69 61 67 6e 6f 73 74 69 63 73 2e 43 6f 64 65 41 6e 61 6c 79 73 69 73 2e 53 75 70 70 72 65 73 73 iagnostics.CodeAnalysis.Suppress
60e0 4d 65 73 73 61 67 65 28 22 4d 69 63 72 6f 73 6f 66 74 2e 44 65 73 69 67 6e 22 2c 20 22 43 41 31 Message("Microsoft.Design",."CA1
6100 30 36 32 3a 56 61 6c 69 64 61 74 65 20 61 72 67 75 6d 65 6e 74 73 20 6f 66 20 70 75 62 6c 69 63 062:Validate.arguments.of.public
6120 20 6d 65 74 68 6f 64 73 22 2c 20 4d 65 73 73 61 67 65 49 64 20 3d 20 22 30 22 2c 20 4a 75 73 74 .methods",.MessageId.=."0",.Just
6140 69 66 69 63 61 74 69 6f 6e 20 3d 20 22 46 61 6c 73 65 20 70 6f 73 69 74 69 76 65 2e 22 29 5d 0d ification.=."False.positive.")].
6160 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 45 71 75 61 6c 73 28 49 6e 70 75 .........public.bool.Equals(Inpu
6180 74 44 65 76 69 63 65 4d 61 74 63 68 65 72 20 6f 74 68 65 72 29 0d 0a 20 20 20 20 20 20 20 20 7b tDeviceMatcher.other)..........{
61a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 5f 50 61 74 74 65 72 6e 73 20 3d 3d 20 ..............if.(m_Patterns.==.
61c0 6f 74 68 65 72 2e 6d 5f 50 61 74 74 65 72 6e 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 other.m_Patterns)...............
61e0 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 ...return.true;................i
6200 66 20 28 6d 5f 50 61 74 74 65 72 6e 73 20 3d 3d 20 6e 75 6c 6c 20 7c 7c 20 6f 74 68 65 72 2e 6d f.(m_Patterns.==.null.||.other.m
6220 5f 50 61 74 74 65 72 6e 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 _Patterns.==.null)..............
6240 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ....return.false;...............
6260 20 69 66 20 28 6d 5f 50 61 74 74 65 72 6e 73 2e 4c 65 6e 67 74 68 20 21 3d 20 6f 74 68 65 72 2e .if.(m_Patterns.Length.!=.other.
6280 6d 5f 50 61 74 74 65 72 6e 73 2e 4c 65 6e 67 74 68 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 m_Patterns.Length)..............
62a0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ....return.false;...............
62c0 20 2f 2f 20 50 61 74 74 65 72 6e 20 63 6f 75 6e 74 20 6d 61 74 63 68 65 73 2e 20 43 6f 6d 70 61 .//.Pattern.count.matches..Compa
62e0 72 65 20 70 61 74 74 65 72 6e 20 62 79 20 70 61 74 74 65 72 6e 2e 20 4f 72 64 65 72 20 6f 66 20 re.pattern.by.pattern..Order.of.
6300 70 61 74 74 65 72 6e 73 20 64 6f 65 73 6e 27 74 20 6d 61 74 74 65 72 2e 0d 0a 20 20 20 20 20 20 patterns.doesn't.matter.........
6320 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 6d 5f 50 61 74 74 ......for.(var.i.=.0;.i.<.m_Patt
6340 65 72 6e 73 2e 4c 65 6e 67 74 68 3b 20 2b 2b 69 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b erns.Length;.++i)..............{
6360 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 74 68 69 73 50 61 74 74 65 72 ..................var.thisPatter
6380 6e 20 3d 20 6d 5f 50 61 74 74 65 72 6e 73 5b 69 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 n.=.m_Patterns[i];..............
63a0 20 20 20 20 76 61 72 20 66 6f 75 6e 64 50 61 74 74 65 72 6e 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 ....var.foundPattern.=.false;...
63c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 6e 20 3d 20 30 3b 20 6e ...............for.(var.n.=.0;.n
63e0 20 3c 20 6d 5f 50 61 74 74 65 72 6e 73 2e 4c 65 6e 67 74 68 3b 20 2b 2b 6e 29 0d 0a 20 20 20 20 .<.m_Patterns.Length;.++n)......
6400 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ............{...................
6420 20 20 20 76 61 72 20 6f 74 68 65 72 50 61 74 74 65 72 6e 20 3d 20 6f 74 68 65 72 2e 6d 5f 50 61 ...var.otherPattern.=.other.m_Pa
6440 74 74 65 72 6e 73 5b 6e 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tterns[n];......................
6460 69 66 20 28 74 68 69 73 50 61 74 74 65 72 6e 2e 4b 65 79 20 21 3d 20 6f 74 68 65 72 50 61 74 74 if.(thisPattern.Key.!=.otherPatt
6480 65 72 6e 2e 4b 65 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ern.Key)........................
64a0 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..continue;.....................
64c0 20 69 66 20 28 21 74 68 69 73 50 61 74 74 65 72 6e 2e 56 61 6c 75 65 2e 45 71 75 61 6c 73 28 6f .if.(!thisPattern.Value.Equals(o
64e0 74 68 65 72 50 61 74 74 65 72 6e 2e 56 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 therPattern.Value)).............
6500 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 .............return.false;......
6520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 75 6e 64 50 61 74 74 65 72 6e 20 3d 20 74 ................foundPattern.=.t
6540 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b rue;......................break;
6560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 ..................}.............
6580 20 20 20 20 20 20 20 69 66 20 28 21 66 6f 75 6e 64 50 61 74 74 65 72 6e 29 0d 0a 20 20 20 20 20 .......if.(!foundPattern).......
65a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 ...............return.false;....
65c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 ..........}................retur
65e0 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f n.true;..........}............//
6600 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6d 70 61 72 65 /.<summary>..........///.Compare
6620 20 74 68 69 73 20 6d 61 74 63 68 65 72 20 74 6f 20 61 6e 6f 74 68 65 72 2e 0d 0a 20 20 20 20 20 .this.matcher.to.another........
6640 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c ...///.</summary>..........///.<
6660 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 62 6a 22 3e 41 20 6d 61 74 63 68 65 72 20 6f 62 6a 65 63 param.name="obj">A.matcher.objec
6680 74 20 6f 72 20 3c 63 3e 6e 75 6c 6c 3c 2f 63 3e 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 t.or.<c>null</c>.</param>.......
66a0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 72 75 65 20 69 66 20 74 68 65 20 6d 61 74 63 ...///.<returns>True.if.the.matc
66c0 68 65 72 20 69 73 20 65 71 75 69 76 61 6c 65 6e 74 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 her.is.equivalent.</returns>....
66e0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 61 6c 73 6f 20 63 72 65 66 3d 22 45 71 75 61 6c 73 28 ......///.<seealso.cref="Equals(
6700 49 6e 70 75 74 44 65 76 69 63 65 4d 61 74 63 68 65 72 29 22 2f 3e 0d 0a 20 20 20 20 20 20 20 20 InputDeviceMatcher)"/>..........
6720 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 45 71 75 61 6c 73 28 6f 62 6a 65 public.override.bool.Equals(obje
6740 63 74 20 6f 62 6a 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ct.obj)..........{..............
6760 69 66 20 28 52 65 66 65 72 65 6e 63 65 45 71 75 61 6c 73 28 6e 75 6c 6c 2c 20 6f 62 6a 29 29 0d if.(ReferenceEquals(null,.obj)).
6780 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a .................return.false;..
67a0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f 62 6a 20 69 73 20 49 6e 70 75 74 44 ............return.obj.is.InputD
67c0 65 76 69 63 65 4d 61 74 63 68 65 72 20 6d 61 74 63 68 65 72 20 26 26 20 45 71 75 61 6c 73 28 6d eviceMatcher.matcher.&&.Equals(m
67e0 61 74 63 68 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f atcher);..........}............/
6800 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6d 70 61 72 //.<summary>..........///.Compar
6820 65 20 74 77 6f 20 6d 61 74 63 68 65 72 73 20 66 6f 72 20 65 71 75 69 76 61 6c 65 6e 63 65 2e 0d e.two.matchers.for.equivalence..
6840 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 .........///.</summary>.........
6860 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 65 66 74 22 3e 46 69 72 73 74 20 64 65 .///.<param.name="left">First.de
6880 76 69 63 65 20 6d 61 74 63 68 65 72 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f vice.matcher.</param>........../
68a0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 69 67 68 74 22 3e 53 65 63 6f 6e 64 20 64 65 //.<param.name="right">Second.de
68c0 76 69 63 65 20 6d 61 74 63 68 65 72 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f vice.matcher.</param>........../
68e0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 72 75 65 20 69 66 20 74 68 65 20 74 77 6f 20 6d 61 74 63 //.<returns>True.if.the.two.matc
6900 68 65 72 73 20 61 72 65 20 65 71 75 69 76 61 6c 65 6e 74 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a hers.are.equivalent.</returns>..
6920 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 61 6c 73 6f 20 63 72 65 66 3d 22 45 71 75 61 6c ........///.<seealso.cref="Equal
6940 73 28 49 6e 70 75 74 44 65 76 69 63 65 4d 61 74 63 68 65 72 29 22 2f 3e 0d 0a 20 20 20 20 20 20 s(InputDeviceMatcher)"/>........
6960 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 6f 70 65 72 61 74 6f 72 3d 3d 28 ..public.static.bool.operator==(
6980 49 6e 70 75 74 44 65 76 69 63 65 4d 61 74 63 68 65 72 20 6c 65 66 74 2c 20 49 6e 70 75 74 44 65 InputDeviceMatcher.left,.InputDe
69a0 76 69 63 65 4d 61 74 63 68 65 72 20 72 69 67 68 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 viceMatcher.right)..........{...
69c0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c 65 66 74 2e 45 71 75 61 6c 73 28 72 69 ...........return.left.Equals(ri
69e0 67 68 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 ght);..........}............///.
6a00 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6d 70 61 72 65 20 74 <summary>..........///.Compare.t
6a20 77 6f 20 6d 61 74 63 68 65 72 73 20 66 6f 72 20 6e 6f 6e 2d 65 71 75 69 76 61 6c 65 6e 63 65 2e wo.matchers.for.non-equivalence.
6a40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 ..........///.</summary>........
6a60 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 65 66 74 22 3e 46 69 72 73 74 20 64 ..///.<param.name="left">First.d
6a80 65 76 69 63 65 20 6d 61 74 63 68 65 72 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 evice.matcher.</param>..........
6aa0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 69 67 68 74 22 3e 53 65 63 6f 6e 64 20 64 ///.<param.name="right">Second.d
6ac0 65 76 69 63 65 20 6d 61 74 63 68 65 72 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 evice.matcher.</param>..........
6ae0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 72 75 65 20 69 66 20 74 68 65 20 74 77 6f 20 6d 61 74 ///.<returns>True.if.the.two.mat
6b00 63 68 65 72 73 20 61 72 65 20 6e 6f 74 20 65 71 75 69 76 61 6c 65 6e 74 2e 3c 2f 72 65 74 75 72 chers.are.not.equivalent.</retur
6b20 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 61 6c 73 6f 20 63 72 65 66 3d 22 ns>..........///.<seealso.cref="
6b40 45 71 75 61 6c 73 28 49 6e 70 75 74 44 65 76 69 63 65 4d 61 74 63 68 65 72 29 22 2f 3e 0d 0a 20 Equals(InputDeviceMatcher)"/>...
6b60 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 6f 70 65 72 61 74 .......public.static.bool.operat
6b80 6f 72 21 3d 28 49 6e 70 75 74 44 65 76 69 63 65 4d 61 74 63 68 65 72 20 6c 65 66 74 2c 20 49 6e or!=(InputDeviceMatcher.left,.In
6ba0 70 75 74 44 65 76 69 63 65 4d 61 74 63 68 65 72 20 72 69 67 68 74 29 0d 0a 20 20 20 20 20 20 20 putDeviceMatcher.right).........
6bc0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 28 6c 65 66 74 20 3d 3d .{..............return.!(left.==
6be0 20 72 69 67 68 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f .right);..........}............/
6c00 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6d 70 75 74 //.<summary>..........///.Comput
6c20 65 20 61 20 68 61 73 68 20 63 6f 64 65 20 66 6f 72 20 74 68 65 20 64 65 76 69 63 65 20 6d 61 74 e.a.hash.code.for.the.device.mat
6c40 63 68 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 cher...........///.</summary>...
6c60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41 20 68 61 73 68 20 63 6f 64 65 20 .......///.<returns>A.hash.code.
6c80 66 6f 72 20 74 68 65 20 6d 61 74 63 68 65 72 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 for.the.matcher.</returns>......
6ca0 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 69 6e 74 20 47 65 74 48 61 73 68 43 ....public.override.int.GetHashC
6cc0 6f 64 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 ode()..........{..............re
6ce0 74 75 72 6e 20 6d 5f 50 61 74 74 65 72 6e 73 20 21 3d 20 6e 75 6c 6c 20 3f 20 6d 5f 50 61 74 74 turn.m_Patterns.!=.null.?.m_Patt
6d00 65 72 6e 73 2e 47 65 74 48 61 73 68 43 6f 64 65 28 29 20 3a 20 30 3b 0d 0a 20 20 20 20 20 20 20 erns.GetHashCode().:.0;.........
6d20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61 .}............private.static.rea
6d40 64 6f 6e 6c 79 20 49 6e 74 65 72 6e 65 64 53 74 72 69 6e 67 20 6b 49 6e 74 65 72 66 61 63 65 4b donly.InternedString.kInterfaceK
6d60 65 79 20 3d 20 6e 65 77 20 49 6e 74 65 72 6e 65 64 53 74 72 69 6e 67 28 22 69 6e 74 65 72 66 61 ey.=.new.InternedString("interfa
6d80 63 65 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 ce");..........private.static.re
6da0 61 64 6f 6e 6c 79 20 49 6e 74 65 72 6e 65 64 53 74 72 69 6e 67 20 6b 44 65 76 69 63 65 43 6c 61 adonly.InternedString.kDeviceCla
6dc0 73 73 4b 65 79 20 3d 20 6e 65 77 20 49 6e 74 65 72 6e 65 64 53 74 72 69 6e 67 28 22 64 65 76 69 ssKey.=.new.InternedString("devi
6de0 63 65 43 6c 61 73 73 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 ceClass");..........private.stat
6e00 69 63 20 72 65 61 64 6f 6e 6c 79 20 49 6e 74 65 72 6e 65 64 53 74 72 69 6e 67 20 6b 4d 61 6e 75 ic.readonly.InternedString.kManu
6e20 66 61 63 74 75 72 65 72 4b 65 79 20 3d 20 6e 65 77 20 49 6e 74 65 72 6e 65 64 53 74 72 69 6e 67 facturerKey.=.new.InternedString
6e40 28 22 6d 61 6e 75 66 61 63 74 75 72 65 72 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 ("manufacturer");..........priva
6e60 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 49 6e 74 65 72 6e 65 64 53 74 72 69 6e te.static.readonly.InternedStrin
6e80 67 20 6b 50 72 6f 64 75 63 74 4b 65 79 20 3d 20 6e 65 77 20 49 6e 74 65 72 6e 65 64 53 74 72 69 g.kProductKey.=.new.InternedStri
6ea0 6e 67 28 22 70 72 6f 64 75 63 74 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 ng("product");..........private.
6ec0 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 49 6e 74 65 72 6e 65 64 53 74 72 69 6e 67 20 6b static.readonly.InternedString.k
6ee0 56 65 72 73 69 6f 6e 4b 65 79 20 3d 20 6e 65 77 20 49 6e 74 65 72 6e 65 64 53 74 72 69 6e 67 28 VersionKey.=.new.InternedString(
6f00 22 76 65 72 73 69 6f 6e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 5b 53 65 72 69 61 6c 69 7a "version");............[Serializ
6f20 61 62 6c 65 5d 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 75 63 74 20 4d able]..........internal.struct.M
6f40 61 74 63 68 65 72 4a 73 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 atcherJson..........{...........
6f60 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 40 69 6e 74 65 72 66 61 63 65 3b 0d 0a 20 20 ...public.string.@interface;....
6f80 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 5b 5d 20 69 6e 74 65 72 66 ..........public.string[].interf
6fa0 61 63 65 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 aces;..............public.string
6fc0 20 64 65 76 69 63 65 43 6c 61 73 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 .deviceClass;..............publi
6fe0 63 20 73 74 72 69 6e 67 5b 5d 20 64 65 76 69 63 65 43 6c 61 73 73 65 73 3b 0d 0a 20 20 20 20 20 c.string[].deviceClasses;.......
7000 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 6d 61 6e 75 66 61 63 74 75 72 65 .......public.string.manufacture
7020 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 5b 5d 20 r;..............public.string[].
7040 6d 61 6e 75 66 61 63 74 75 72 65 72 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c manufacturers;..............publ
7060 69 63 20 73 74 72 69 6e 67 20 70 72 6f 64 75 63 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ic.string.product;..............
7080 70 75 62 6c 69 63 20 73 74 72 69 6e 67 5b 5d 20 70 72 6f 64 75 63 74 73 3b 0d 0a 20 20 20 20 20 public.string[].products;.......
70a0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 76 65 72 73 69 6f 6e 3b 0d 0a 20 .......public.string.version;...
70c0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 5b 5d 20 76 65 72 73 69 ...........public.string[].versi
70e0 6f 6e 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 43 61 70 61 62 69 6c ons;..............public.Capabil
7100 69 74 79 5b 5d 20 63 61 70 61 62 69 6c 69 74 69 65 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 ity[].capabilities;.............
7120 20 20 20 70 75 62 6c 69 63 20 73 74 72 75 63 74 20 43 61 70 61 62 69 6c 69 74 79 0d 0a 20 20 20 ...public.struct.Capability.....
7140 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c .........{..................publ
7160 69 63 20 73 74 72 69 6e 67 20 70 61 74 68 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ic.string.path;.................
7180 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 .public.string.value;...........
71a0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 ...}................public.stati
71c0 63 20 4d 61 74 63 68 65 72 4a 73 6f 6e 20 46 72 6f 6d 4d 61 74 63 68 65 72 28 49 6e 70 75 74 44 c.MatcherJson.FromMatcher(InputD
71e0 65 76 69 63 65 4d 61 74 63 68 65 72 20 6d 61 74 63 68 65 72 29 0d 0a 20 20 20 20 20 20 20 20 20 eviceMatcher.matcher)...........
7200 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 61 74 63 68 65 ...{..................if.(matche
7220 72 2e 65 6d 70 74 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 r.empty)......................re
7240 74 75 72 6e 20 6e 65 77 20 4d 61 74 63 68 65 72 4a 73 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 turn.new.MatcherJson();.........
7260 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6a 73 6f 6e 20 3d 20 6e 65 77 20 4d 61 74 63 68 65 ...........var.json.=.new.Matche
7280 72 4a 73 6f 6e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 rJson();..................foreac
72a0 68 20 28 76 61 72 20 70 61 74 74 65 72 6e 20 69 6e 20 6d 61 74 63 68 65 72 2e 6d 5f 50 61 74 74 h.(var.pattern.in.matcher.m_Patt
72c0 65 72 6e 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 erns)..................{........
72e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6b 65 79 20 3d 20 70 61 74 74 65 72 6e 2e ..............var.key.=.pattern.
7300 4b 65 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 76 61 Key;......................var.va
7320 6c 75 65 20 3d 20 70 61 74 74 65 72 6e 2e 56 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d lue.=.pattern.Value.ToString();.
7340 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79 20 3d .......................if.(key.=
7360 3d 20 6b 49 6e 74 65 72 66 61 63 65 4b 65 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 =.kInterfaceKey)................
7380 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ......{.........................
73a0 20 69 66 20 28 6a 73 6f 6e 2e 40 69 6e 74 65 72 66 61 63 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 .if.(json.@interface.==.null)...
73c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a 73 6f 6e 2e ...........................json.
73e0 40 69 6e 74 65 72 66 61 63 65 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 @interface.=.value;.............
7400 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .............else...............
7420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 72 72 61 79 48 65 6c 70 65 72 73 2e 41 70 70 65 ...............ArrayHelpers.Appe
7440 6e 64 28 72 65 66 20 6a 73 6f 6e 2e 69 6e 74 65 72 66 61 63 65 73 2c 20 76 61 6c 75 65 29 3b 0d nd(ref.json.interfaces,.value);.
7460 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 .....................}..........
7480 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 6b 44 65 76 ............else.if.(key.==.kDev
74a0 69 63 65 43 6c 61 73 73 4b 65 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 iceClassKey)....................
74c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 ..{..........................if.
74e0 28 6a 73 6f 6e 2e 64 65 76 69 63 65 43 6c 61 73 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 (json.deviceClass.==.null)......
7500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a 73 6f 6e 2e 64 65 76 ........................json.dev
7520 69 63 65 43 6c 61 73 73 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 iceClass.=.value;...............
7540 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...........else.................
7560 20 20 20 20 20 20 20 20 20 20 20 20 20 41 72 72 61 79 48 65 6c 70 65 72 73 2e 41 70 70 65 6e 64 .............ArrayHelpers.Append
7580 28 72 65 66 20 6a 73 6f 6e 2e 64 65 76 69 63 65 43 6c 61 73 73 65 73 2c 20 76 61 6c 75 65 29 3b (ref.json.deviceClasses,.value);
75a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 ......................}.........
75c0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 6b 4d 61 .............else.if.(key.==.kMa
75e0 6e 75 66 61 63 74 75 72 65 72 4b 65 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nufacturerKey)..................
7600 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 ....{..........................i
7620 66 20 28 6a 73 6f 6e 2e 6d 61 6e 75 66 61 63 74 75 72 65 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 f.(json.manufacturer.==.null)...
7640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a 73 6f 6e 2e ...........................json.
7660 6d 61 6e 75 66 61 63 74 75 72 65 72 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 manufacturer.=.value;...........
7680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ...............else.............
76a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 72 72 61 79 48 65 6c 70 65 72 73 2e 41 70 .................ArrayHelpers.Ap
76c0 70 65 6e 64 28 72 65 66 20 6a 73 6f 6e 2e 6d 61 6e 75 66 61 63 74 75 72 65 72 73 2c 20 76 61 6c pend(ref.json.manufacturers,.val
76e0 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 ue);......................}.....
7700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d .................else.if.(key.==
7720 20 6b 50 72 6f 64 75 63 74 4b 65 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .kProductKey)...................
7740 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 ...{..........................if
7760 20 28 6a 73 6f 6e 2e 70 72 6f 64 75 63 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 .(json.product.==.null).........
7780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a 73 6f 6e 2e 70 72 6f 64 75 63 .....................json.produc
77a0 74 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.=.value;......................
77c0 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....else........................
77e0 20 20 20 20 20 20 41 72 72 61 79 48 65 6c 70 65 72 73 2e 41 70 70 65 6e 64 28 72 65 66 20 6a 73 ......ArrayHelpers.Append(ref.js
7800 6f 6e 2e 70 72 6f 64 75 63 74 73 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 on.products,.value);............
7820 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..........}.....................
7840 20 65 6c 73 65 20 69 66 20 28 6b 65 79 20 3d 3d 20 6b 56 65 72 73 69 6f 6e 4b 65 79 29 0d 0a 20 .else.if.(key.==.kVersionKey)...
7860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 ...................{............
7880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6a 73 6f 6e 2e 76 65 72 73 69 6f 6e 20 3d ..............if.(json.version.=
78a0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 =.null).........................
78c0 20 20 20 20 20 6a 73 6f 6e 2e 76 65 72 73 69 6f 6e 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 .....json.version.=.value;......
78e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 ....................else........
7900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 72 72 61 79 48 65 6c 70 65 ......................ArrayHelpe
7920 72 73 2e 41 70 70 65 6e 64 28 72 65 66 20 6a 73 6f 6e 2e 76 65 72 73 69 6f 6e 73 2c 20 76 61 6c rs.Append(ref.json.versions,.val
7940 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 ue);......................}.....
7960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 .................else...........
7980 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...........{....................
79a0 20 20 20 20 20 20 41 72 72 61 79 48 65 6c 70 65 72 73 2e 41 70 70 65 6e 64 28 72 65 66 20 6a 73 ......ArrayHelpers.Append(ref.js
79c0 6f 6e 2e 63 61 70 61 62 69 6c 69 74 69 65 73 2c 20 6e 65 77 20 43 61 70 61 62 69 6c 69 74 79 20 on.capabilities,.new.Capability.
79e0 7b 70 61 74 68 20 3d 20 6b 65 79 2c 20 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 7d 29 3b 0d 0a 20 {path.=.key,.value.=.value});...
7a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 ...................}............
7a20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 ......}....................retur
7a40 6e 20 6a 73 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 n.json;..............}..........
7a60 20 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 70 75 74 44 65 76 69 63 65 4d 61 74 63 68 65 72 20 ......public.InputDeviceMatcher.
7a80 54 6f 4d 61 74 63 68 65 72 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 ToMatcher()..............{......
7aa0 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6d 61 74 63 68 65 72 20 3d 20 6e 65 77 20 49 6e ............var.matcher.=.new.In
7ac0 70 75 74 44 65 76 69 63 65 4d 61 74 63 68 65 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 putDeviceMatcher();.............
7ae0 20 20 20 20 20 20 20 2f 2f 2f 2f 54 4f 44 4f 3a 20 67 65 74 20 72 69 64 20 6f 66 20 74 68 65 20 .......////TODO:.get.rid.of.the.
7b00 70 69 65 63 65 6d 65 61 6c 20 61 72 72 61 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 61 6e 64 20 64 piecemeal.array.allocation.and.d
7b20 6f 20 69 74 20 69 6e 20 6f 6e 65 20 73 74 65 70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 o.it.in.one.step................
7b40 20 20 20 20 2f 2f 20 49 6e 74 65 72 66 61 63 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ....//.Interfaces...............
7b60 20 20 20 20 69 66 20 28 21 73 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 40 69 ....if.(!string.IsNullOrEmpty(@i
7b80 6e 74 65 72 66 61 63 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nterface))......................
7ba0 6d 61 74 63 68 65 72 20 3d 20 6d 61 74 63 68 65 72 2e 57 69 74 68 49 6e 74 65 72 66 61 63 65 28 matcher.=.matcher.WithInterface(
7bc0 40 69 6e 74 65 72 66 61 63 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 @interface);..................if
7be0 20 28 69 6e 74 65 72 66 61 63 65 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 .(interfaces.!=.null)...........
7c00 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 76 61 72 20 76 61 6c 75 65 20 69 6e ...........foreach.(var.value.in
7c20 20 69 6e 74 65 72 66 61 63 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .interfaces)....................
7c40 20 20 20 20 20 20 6d 61 74 63 68 65 72 20 3d 20 6d 61 74 63 68 65 72 2e 57 69 74 68 49 6e 74 65 ......matcher.=.matcher.WithInte
7c60 72 66 61 63 65 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rface(value);...................
7c80 20 2f 2f 20 44 65 76 69 63 65 20 63 6c 61 73 73 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 .//.Device.classes..............
7ca0 20 20 20 20 20 69 66 20 28 21 73 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 .....if.(!string.IsNullOrEmpty(d
7cc0 65 76 69 63 65 43 6c 61 73 73 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 eviceClass))....................
7ce0 20 20 6d 61 74 63 68 65 72 20 3d 20 6d 61 74 63 68 65 72 2e 57 69 74 68 44 65 76 69 63 65 43 6c ..matcher.=.matcher.WithDeviceCl
7d00 61 73 73 28 64 65 76 69 63 65 43 6c 61 73 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ass(deviceClass);...............
7d20 20 20 20 69 66 20 28 64 65 76 69 63 65 43 6c 61 73 73 65 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 ...if.(deviceClasses.!=.null)...
7d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 76 61 72 20 ...................foreach.(var.
7d60 76 61 6c 75 65 20 69 6e 20 64 65 76 69 63 65 43 6c 61 73 73 65 73 29 0d 0a 20 20 20 20 20 20 20 value.in.deviceClasses).........
7d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 72 20 3d 20 6d 61 74 63 68 .................matcher.=.match
7da0 65 72 2e 57 69 74 68 44 65 76 69 63 65 43 6c 61 73 73 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 er.WithDeviceClass(value);......
7dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4d 61 6e 75 66 61 63 74 75 72 65 72 2e 0d 0a ..............//.Manufacturer...
7de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 73 74 72 69 6e 67 2e 49 73 4e 75 ................if.(!string.IsNu
7e00 6c 6c 4f 72 45 6d 70 74 79 28 6d 61 6e 75 66 61 63 74 75 72 65 72 29 29 0d 0a 20 20 20 20 20 20 llOrEmpty(manufacturer))........
7e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 72 20 3d 20 6d 61 74 63 68 65 72 2e ..............matcher.=.matcher.
7e40 57 69 74 68 4d 61 6e 75 66 61 63 74 75 72 65 72 28 6d 61 6e 75 66 61 63 74 75 72 65 72 29 3b 0d WithManufacturer(manufacturer);.
7e60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 61 6e 75 66 61 63 74 75 72 65 .................if.(manufacture
7e80 72 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rs.!=.null).....................
7ea0 20 66 6f 72 65 61 63 68 20 28 76 61 72 20 76 61 6c 75 65 20 69 6e 20 6d 61 6e 75 66 61 63 74 75 .foreach.(var.value.in.manufactu
7ec0 72 65 72 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d rers)..........................m
7ee0 61 74 63 68 65 72 20 3d 20 6d 61 74 63 68 65 72 2e 57 69 74 68 4d 61 6e 75 66 61 63 74 75 72 65 atcher.=.matcher.WithManufacture
7f00 72 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 r(value);....................//.
7f20 50 72 6f 64 75 63 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 73 Product...................if.(!s
7f40 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 70 72 6f 64 75 63 74 29 29 0d 0a 20 tring.IsNullOrEmpty(product))...
7f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 72 20 3d 20 6d 61 74 ...................matcher.=.mat
7f80 63 68 65 72 2e 57 69 74 68 50 72 6f 64 75 63 74 28 70 72 6f 64 75 63 74 29 3b 0d 0a 20 20 20 20 cher.WithProduct(product);......
7fa0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72 6f 64 75 63 74 73 20 21 3d 20 6e 75 6c 6c ............if.(products.!=.null
7fc0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 )......................foreach.(
7fe0 76 61 72 20 76 61 6c 75 65 20 69 6e 20 70 72 6f 64 75 63 74 73 29 0d 0a 20 20 20 20 20 20 20 20 var.value.in.products)..........
8000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 72 20 3d 20 6d 61 74 63 68 65 ................matcher.=.matche
8020 72 2e 57 69 74 68 50 72 6f 64 75 63 74 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 r.WithProduct(value);...........
8040 20 20 20 20 20 20 20 20 20 2f 2f 20 56 65 72 73 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 .........//.Version.............
8060 20 20 20 20 20 20 69 66 20 28 21 73 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 ......if.(!string.IsNullOrEmpty(
8080 76 65 72 73 69 6f 6e 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d version))......................m
80a0 61 74 63 68 65 72 20 3d 20 6d 61 74 63 68 65 72 2e 57 69 74 68 56 65 72 73 69 6f 6e 28 76 65 72 atcher.=.matcher.WithVersion(ver
80c0 73 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 65 72 73 sion);..................if.(vers
80e0 69 6f 6e 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ions.!=.null)...................
8100 20 20 20 66 6f 72 65 61 63 68 20 28 76 61 72 20 76 61 6c 75 65 20 69 6e 20 76 65 72 73 69 6f 6e ...foreach.(var.value.in.version
8120 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 74 63 s)..........................matc
8140 68 65 72 20 3d 20 6d 61 74 63 68 65 72 2e 57 69 74 68 56 65 72 73 69 6f 6e 28 76 61 6c 75 65 29 her.=.matcher.WithVersion(value)
8160 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 61 70 61 62 69 6c 69 ;....................//.Capabili
8180 74 69 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 61 70 61 62 ties...................if.(capab
81a0 69 6c 69 74 69 65 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ilities.!=.null)................
81c0 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 76 61 72 20 76 61 6c 75 65 20 69 6e 20 63 61 70 61 ......foreach.(var.value.in.capa
81e0 62 69 6c 69 74 69 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 bilities).......................
8200 20 20 20 2f 2f 2f 2f 46 49 58 4d 45 3a 20 77 65 27 72 65 20 74 75 72 6e 69 6e 67 20 61 6c 6c 20 ...////FIXME:.we're.turning.all.
8220 76 61 6c 75 65 73 20 69 6e 74 6f 20 73 74 72 69 6e 67 73 20 68 65 72 65 0d 0a 20 20 20 20 20 20 values.into.strings.here........
8240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 74 63 68 65 72 20 3d 20 6d 61 74 63 ..................matcher.=.matc
8260 68 65 72 2e 57 69 74 68 43 61 70 61 62 69 6c 69 74 79 28 76 61 6c 75 65 2e 70 61 74 68 2c 20 76 her.WithCapability(value.path,.v
8280 61 6c 75 65 2e 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 alue.value);....................
82a0 72 65 74 75 72 6e 20 6d 61 74 63 68 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a return.matcher;..............}..
82c0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 7d 0d 0a 00 00 00 00 00 00 00 00 00 00 00 ........}......}..}.............
82e0 00 00 00 00 00 00 00 00 00 00 00 00 12 00 00 00 49 6e 70 75 74 44 65 76 69 63 65 4d 61 74 63 68 ................InputDeviceMatch
8300 65 72 00 00 00 00 00 00 er......