{"diffoscope-json-version": 1, "source1": "/input1", "source2": "/input2", "unified_diff": null, "details": [{"source1": "zipinfo -v {}", "source2": "zipinfo -v {}", "unified_diff": "@@ -204,15 +204,15 @@\n   minimum software version required to extract:   2.0\n   compression method:                             none (stored)\n   file security status:                           not encrypted\n   extended local header:                          yes\n   file last modified on (DOS date/time):          2098 Jan 1 00:00:00\n   file last modified on (UT extra field modtime): 1970 Jan 1 00:00:00 local\n   file last modified on (UT extra field modtime): 1970 Jan 1 00:00:00 UTC\n-  32-bit CRC value (hex):                         4fd1032f\n+  32-bit CRC value (hex):                         dbd2abb0\n   compressed size:                                15138 bytes\n   uncompressed size:                              15138 bytes\n   length of filename:                             34 characters\n   length of extra field:                          9 bytes\n   length of file comment:                         0 characters\n   disk number on which file begins:               disk 1\n   apparent file type:                             binary\n"}, {"source1": "zipdetails --redact --scan --utc {}", "source2": "zipdetails --redact --scan --utc {}", "unified_diff": "@@ -145,15 +145,15 @@\n 0A4A6 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n 0A4A8   Length              0005 (5)\n 0A4AA   Flags               01 (1) 'Modification'\n 0A4AB   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n 0A4AF PAYLOAD\n \n 0DFD1 DATA DESCRIPTOR       08074B50 (134695760)\n-0DFD5 CRC                   4FD1032F (1339097903)\n+0DFD5 CRC                   DBD2ABB0 (3688016816)\n 0DFD9 Compressed Size       00003B22 (15138)\n 0DFDD Uncompressed Size     00003B22 (15138)\n \n 0DFE1 LOCAL HEADER #7       04034B50 (67324752)\n 0DFE5 Extract Zip Spec      14 (20) '2.0'\n 0DFE6 Extract OS            00 (0) 'MS-DOS'\n 0DFE7 General Purpose Flag  0000 (0)\n@@ -2112,15 +2112,15 @@\n 817D9 Created OS            00 (0) 'MS-DOS'\n 817DA Extract Zip Spec      14 (20) '2.0'\n 817DB Extract OS            00 (0) 'MS-DOS'\n 817DC General Purpose Flag  0008 (8)\n       [Bit  3]              1 'Streamed'\n 817DE Compression Method    0000 (0) 'Stored'\n 817E0 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-817E4 CRC                   4FD1032F (1339097903)\n+817E4 CRC                   DBD2ABB0 (3688016816)\n 817E8 Compressed Size       00003B22 (15138)\n 817EC Uncompressed Size     00003B22 (15138)\n 817F0 Filename Length       0022 (34)\n 817F2 Extra Length          0009 (9)\n 817F4 Comment Length        0000 (0)\n 817F6 Disk Start            0000 (0)\n 817F8 Int File Attributes   0000 (0)\n"}, {"source1": "META-INF/jsftemplating/Handler.map", "source2": "META-INF/jsftemplating/Handler.map", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,8 +1,141 @@\n \n+#  This handler looks at the input TableRowGroup, checks which row is selected, and returns a list of the Map.\n+#    Each Map corresponding to one single row of the table.\n+#    This method only works for the table where each row consists of one single map since it only looks at the\n+#    first element that is returned by the getObject() method of MultipleListDataProvider.\n+# \n+#    Input  value: \"TableRowGroup\" -- Type:  com.sun.webui.jsf.component.TableRowGroup\n+#    Input  value: \"selectedRows\" -- Type:  java.util.List\n+getSelectedSingleMapRows.class=org.glassfish.admingui.handlers.TableHandlers\n+getSelectedSingleMapRows.method=getSelectedSingleMapRows\n+getSelectedSingleMapRows.input[0].name=TableRowGroup\n+getSelectedSingleMapRows.input[0].type=com.sun.webui.jsf.component.TableRowGroup\n+getSelectedSingleMapRows.input[0].required=true\n+getSelectedSingleMapRows.output[0].name=selectedRows\n+getSelectedSingleMapRows.output[0].type=java.util.List\n+\n+#  This handler returns the selected row keys.\n+getSelectedTableRowKeys.class=org.glassfish.admingui.handlers.TableHandlers\n+getSelectedTableRowKeys.method=getSelectedTableRowKeys\n+getSelectedTableRowKeys.input[0].name=tableRowGroup\n+getSelectedTableRowKeys.input[0].type=com.sun.webui.jsf.component.TableRowGroup\n+getSelectedTableRowKeys.input[0].required=true\n+getSelectedTableRowKeys.output[0].name=rowKeys\n+getSelectedTableRowKeys.output[0].type=[Lcom.sun.data.provider.RowKey;\n+\n+#  This handler deletes the given RowKeys.\n+deleteTableRows.class=org.glassfish.admingui.handlers.TableHandlers\n+deleteTableRows.method=deleteTableRows\n+deleteTableRows.input[0].name=tableRowGroup\n+deleteTableRows.input[0].type=com.sun.webui.jsf.component.TableRowGroup\n+deleteTableRows.input[0].required=true\n+deleteTableRows.input[1].name=rowKeys\n+deleteTableRows.input[1].type=[Lcom.sun.data.provider.RowKey;\n+deleteTableRows.input[1].required=true\n+\n+#  This handler commits the changes to a TableRowGroup's\n+#      DataProvider.\n+commitTableRowGroup.class=org.glassfish.admingui.handlers.TableHandlers\n+commitTableRowGroup.method=commitTableRowGroup\n+commitTableRowGroup.input[0].name=tableRowGroup\n+commitTableRowGroup.input[0].type=com.sun.webui.jsf.component.TableRowGroup\n+commitTableRowGroup.input[0].required=true\n+\n+#  This handler takes in a HashMap, the name-value pair being the Properties.\n+#   It turns each name-value pair to one hashMap, representing one row of table data,\n+#   and returns the list of Map.\n+# \n+#    Input value: \"Properties\" -- Type: java.util.Map/\n+#    Output value: \"TableList\" -- Type: java.util.List/\n+getTableListFromProperties.class=org.glassfish.admingui.handlers.TableHandlers\n+getTableListFromProperties.method=getTableListFromProperties\n+getTableListFromProperties.input[0].name=Properties\n+getTableListFromProperties.input[0].type=java.util.Map\n+getTableListFromProperties.input[0].required=true\n+getTableListFromProperties.output[0].name=TableList\n+getTableListFromProperties.output[0].type=java.util.List\n+\n+#  This handler takes TableRowGroup as input and returns a List of Map objects.\n+#    The List returned contains Map objects with each Map representing one single row.\n+#    This method only works for tables where each row consists of one single map\n+# \n+#    Input  value: \"TableRowGroup\" -- Type:  com.sun.webui.jsf.component.TableRowGroup\n+#    Output  value: \"Rows\" -- Type:  java.util.List\n+getAllSingleMapRows.class=org.glassfish.admingui.handlers.TableHandlers\n+getAllSingleMapRows.method=getAllSingleMapRows\n+getAllSingleMapRows.input[0].name=TableRowGroup\n+getAllSingleMapRows.input[0].type=com.sun.webui.jsf.component.TableRowGroup\n+getAllSingleMapRows.input[0].required=true\n+getAllSingleMapRows.output[0].name=Rows\n+getAllSingleMapRows.output[0].type=java.util.List\n+\n+#  This handler adds one row to  table\n+#    Input  value: \"TableRowGroup\" -- Type:  com.sun.webui.jsf.component.TableRowGroup\n+#    Input value: \"NameList\" -- Type:java.util.List\n+#    Input value: \"DefaultValueList\" -- Type:java.util.List\n+#    Input value: \"HasSelected\" -- Type:java.lang.Boolean\n+addRowToTable.class=org.glassfish.admingui.handlers.TableHandlers\n+addRowToTable.method=addRowToTable\n+addRowToTable.input[0].name=TableRowGroup\n+addRowToTable.input[0].type=com.sun.webui.jsf.component.TableRowGroup\n+addRowToTable.input[0].required=true\n+addRowToTable.input[1].name=NameList\n+addRowToTable.input[1].type=java.util.List\n+addRowToTable.input[2].name=HasSelected\n+addRowToTable.input[2].type=java.lang.Boolean\n+addRowToTable.input[3].name=DefaultValueList\n+addRowToTable.input[3].type=java.util.List\n+\n+#  This handler converts the table list to arraylist.\n+convertListToArrayList.class=org.glassfish.admingui.handlers.TableHandlers\n+convertListToArrayList.method=convertListToArrayList\n+convertListToArrayList.input[0].name=TableList\n+convertListToArrayList.input[0].type=java.util.List\n+convertListToArrayList.input[0].required=true\n+convertListToArrayList.input[1].name=Name\n+convertListToArrayList.input[1].type=java.lang.String\n+convertListToArrayList.output[0].name=NameList\n+convertListToArrayList.output[0].type=java.util.ArrayList\n+\n+#  This handler returns the properties to be removed and added.\n+getAddRemoveProps.class=org.glassfish.admingui.handlers.TableHandlers\n+getAddRemoveProps.method=getAddRemoveProps\n+getAddRemoveProps.input[0].name=NewList\n+getAddRemoveProps.input[0].type=java.util.List\n+getAddRemoveProps.input[0].required=true\n+getAddRemoveProps.input[1].name=OldList\n+getAddRemoveProps.input[1].type=java.util.Map\n+getAddRemoveProps.input[1].required=true\n+getAddRemoveProps.input[2].name=NameList\n+getAddRemoveProps.input[2].type=java.util.ArrayList\n+getAddRemoveProps.input[2].required=true\n+getAddRemoveProps.output[0].name=AddProps\n+getAddRemoveProps.output[0].type=java.util.Map\n+getAddRemoveProps.output[1].name=RemoveProps\n+getAddRemoveProps.output[1].type=java.util.ArrayList\n+\n+#  This handler converts the table List to a Property map.\n+convertRowsToProperties.class=org.glassfish.admingui.handlers.TableHandlers\n+convertRowsToProperties.method=convertRowsToProperties\n+convertRowsToProperties.input[0].name=NewList\n+convertRowsToProperties.input[0].type=java.util.List\n+convertRowsToProperties.input[0].required=true\n+convertRowsToProperties.output[0].name=AddProps\n+convertRowsToProperties.output[0].type=java.util.Map\n+\n+#  This handler converts the table List to a Properties map.\n+getProperties.class=org.glassfish.admingui.handlers.TableHandlers\n+getProperties.method=getProperties\n+getProperties.input[0].name=NewList\n+getProperties.input[0].type=java.util.List\n+getProperties.input[0].required=true\n+getProperties.output[0].name=AddProps\n+getProperties.output[0].type=java.util.Map\n+\n # \n #  This handler will delete file from temp directory\n deleteFileFromTempDir.class=org.glassfish.admingui.handlers.WoodstockHandler\n deleteFileFromTempDir.method=deleteFileFromTempDir\n deleteFileFromTempDir.input[0].name=deleteTempFile\n deleteFileFromTempDir.input[0].type=java.lang.String\n \n@@ -139,147 +272,14 @@\n populateComponentDropDown.input[2].required=true\n populateComponentDropDown.input[3].name=AppName\n populateComponentDropDown.input[3].type=java.lang.String\n populateComponentDropDown.input[3].required=true\n populateComponentDropDown.output[0].name=ComponentList\n populateComponentDropDown.output[0].type=[Lcom.sun.webui.jsf.model.Option;\n \n-#  This handler looks at the input TableRowGroup, checks which row is selected, and returns a list of the Map.\n-#    Each Map corresponding to one single row of the table.\n-#    This method only works for the table where each row consists of one single map since it only looks at the\n-#    first element that is returned by the getObject() method of MultipleListDataProvider.\n-# \n-#    Input  value: \"TableRowGroup\" -- Type:  com.sun.webui.jsf.component.TableRowGroup\n-#    Input  value: \"selectedRows\" -- Type:  java.util.List\n-getSelectedSingleMapRows.class=org.glassfish.admingui.handlers.TableHandlers\n-getSelectedSingleMapRows.method=getSelectedSingleMapRows\n-getSelectedSingleMapRows.input[0].name=TableRowGroup\n-getSelectedSingleMapRows.input[0].type=com.sun.webui.jsf.component.TableRowGroup\n-getSelectedSingleMapRows.input[0].required=true\n-getSelectedSingleMapRows.output[0].name=selectedRows\n-getSelectedSingleMapRows.output[0].type=java.util.List\n-\n-#  This handler returns the selected row keys.\n-getSelectedTableRowKeys.class=org.glassfish.admingui.handlers.TableHandlers\n-getSelectedTableRowKeys.method=getSelectedTableRowKeys\n-getSelectedTableRowKeys.input[0].name=tableRowGroup\n-getSelectedTableRowKeys.input[0].type=com.sun.webui.jsf.component.TableRowGroup\n-getSelectedTableRowKeys.input[0].required=true\n-getSelectedTableRowKeys.output[0].name=rowKeys\n-getSelectedTableRowKeys.output[0].type=[Lcom.sun.data.provider.RowKey;\n-\n-#  This handler deletes the given RowKeys.\n-deleteTableRows.class=org.glassfish.admingui.handlers.TableHandlers\n-deleteTableRows.method=deleteTableRows\n-deleteTableRows.input[0].name=tableRowGroup\n-deleteTableRows.input[0].type=com.sun.webui.jsf.component.TableRowGroup\n-deleteTableRows.input[0].required=true\n-deleteTableRows.input[1].name=rowKeys\n-deleteTableRows.input[1].type=[Lcom.sun.data.provider.RowKey;\n-deleteTableRows.input[1].required=true\n-\n-#  This handler commits the changes to a TableRowGroup's\n-#      DataProvider.\n-commitTableRowGroup.class=org.glassfish.admingui.handlers.TableHandlers\n-commitTableRowGroup.method=commitTableRowGroup\n-commitTableRowGroup.input[0].name=tableRowGroup\n-commitTableRowGroup.input[0].type=com.sun.webui.jsf.component.TableRowGroup\n-commitTableRowGroup.input[0].required=true\n-\n-#  This handler takes in a HashMap, the name-value pair being the Properties.\n-#   It turns each name-value pair to one hashMap, representing one row of table data,\n-#   and returns the list of Map.\n-# \n-#    Input value: \"Properties\" -- Type: java.util.Map/\n-#    Output value: \"TableList\" -- Type: java.util.List/\n-getTableListFromProperties.class=org.glassfish.admingui.handlers.TableHandlers\n-getTableListFromProperties.method=getTableListFromProperties\n-getTableListFromProperties.input[0].name=Properties\n-getTableListFromProperties.input[0].type=java.util.Map\n-getTableListFromProperties.input[0].required=true\n-getTableListFromProperties.output[0].name=TableList\n-getTableListFromProperties.output[0].type=java.util.List\n-\n-#  This handler takes TableRowGroup as input and returns a List of Map objects.\n-#    The List returned contains Map objects with each Map representing one single row.\n-#    This method only works for tables where each row consists of one single map\n-# \n-#    Input  value: \"TableRowGroup\" -- Type:  com.sun.webui.jsf.component.TableRowGroup\n-#    Output  value: \"Rows\" -- Type:  java.util.List\n-getAllSingleMapRows.class=org.glassfish.admingui.handlers.TableHandlers\n-getAllSingleMapRows.method=getAllSingleMapRows\n-getAllSingleMapRows.input[0].name=TableRowGroup\n-getAllSingleMapRows.input[0].type=com.sun.webui.jsf.component.TableRowGroup\n-getAllSingleMapRows.input[0].required=true\n-getAllSingleMapRows.output[0].name=Rows\n-getAllSingleMapRows.output[0].type=java.util.List\n-\n-#  This handler adds one row to  table\n-#    Input  value: \"TableRowGroup\" -- Type:  com.sun.webui.jsf.component.TableRowGroup\n-#    Input value: \"NameList\" -- Type:java.util.List\n-#    Input value: \"DefaultValueList\" -- Type:java.util.List\n-#    Input value: \"HasSelected\" -- Type:java.lang.Boolean\n-addRowToTable.class=org.glassfish.admingui.handlers.TableHandlers\n-addRowToTable.method=addRowToTable\n-addRowToTable.input[0].name=TableRowGroup\n-addRowToTable.input[0].type=com.sun.webui.jsf.component.TableRowGroup\n-addRowToTable.input[0].required=true\n-addRowToTable.input[1].name=NameList\n-addRowToTable.input[1].type=java.util.List\n-addRowToTable.input[2].name=HasSelected\n-addRowToTable.input[2].type=java.lang.Boolean\n-addRowToTable.input[3].name=DefaultValueList\n-addRowToTable.input[3].type=java.util.List\n-\n-#  This handler converts the table list to arraylist.\n-convertListToArrayList.class=org.glassfish.admingui.handlers.TableHandlers\n-convertListToArrayList.method=convertListToArrayList\n-convertListToArrayList.input[0].name=TableList\n-convertListToArrayList.input[0].type=java.util.List\n-convertListToArrayList.input[0].required=true\n-convertListToArrayList.input[1].name=Name\n-convertListToArrayList.input[1].type=java.lang.String\n-convertListToArrayList.output[0].name=NameList\n-convertListToArrayList.output[0].type=java.util.ArrayList\n-\n-#  This handler returns the properties to be removed and added.\n-getAddRemoveProps.class=org.glassfish.admingui.handlers.TableHandlers\n-getAddRemoveProps.method=getAddRemoveProps\n-getAddRemoveProps.input[0].name=NewList\n-getAddRemoveProps.input[0].type=java.util.List\n-getAddRemoveProps.input[0].required=true\n-getAddRemoveProps.input[1].name=OldList\n-getAddRemoveProps.input[1].type=java.util.Map\n-getAddRemoveProps.input[1].required=true\n-getAddRemoveProps.input[2].name=NameList\n-getAddRemoveProps.input[2].type=java.util.ArrayList\n-getAddRemoveProps.input[2].required=true\n-getAddRemoveProps.output[0].name=AddProps\n-getAddRemoveProps.output[0].type=java.util.Map\n-getAddRemoveProps.output[1].name=RemoveProps\n-getAddRemoveProps.output[1].type=java.util.ArrayList\n-\n-#  This handler converts the table List to a Property map.\n-convertRowsToProperties.class=org.glassfish.admingui.handlers.TableHandlers\n-convertRowsToProperties.method=convertRowsToProperties\n-convertRowsToProperties.input[0].name=NewList\n-convertRowsToProperties.input[0].type=java.util.List\n-convertRowsToProperties.input[0].required=true\n-convertRowsToProperties.output[0].name=AddProps\n-convertRowsToProperties.output[0].type=java.util.Map\n-\n-#  This handler converts the table List to a Properties map.\n-getProperties.class=org.glassfish.admingui.handlers.TableHandlers\n-getProperties.method=getProperties\n-getProperties.input[0].name=NewList\n-getProperties.input[0].type=java.util.List\n-getProperties.input[0].required=true\n-getProperties.output[0].name=AddProps\n-getProperties.output[0].type=java.util.Map\n-\n #  This method initializes the theme using the given\n #      themeName and themeVersion.  If these\n #      values are not supplied, \"suntheme\" and \"4.2\" will be used\n #      respectively.  This method should be invoked before the theme is\n #      accessed (for example on the initPage or beforeCreate of the login\n #      page).\n getTheme.class=org.glassfish.admingui.handlers.ThemeHandlers\n"}]}
