sanitize about page
sanitize about page


Former-commit-id: cb7615df40fc19452099ed7a35fd542733595c55

--- a/.gitmodules
+++ b/.gitmodules
@@ -4,9 +4,6 @@
 [submodule "couchdb/settee"]
 	path = couchdb/settee
 	url = https://github.com/inadarei/settee.git
-[submodule "lib/springy"]
-	path = lib/springy
-	url = https://github.com/dhotson/springy.git
 [submodule "lib/php-diff"]
 	path = lib/php-diff
 	url = https://github.com/chrisboulton/php-diff.git
@@ -16,4 +13,13 @@
 [submodule "javascripts/flotr2"]
 	path = javascripts/flotr2
 	url = https://github.com/HumbleSoftware/Flotr2.git
+[submodule "lib/phpquery"]
+	path = lib/phpquery
+	url = https://github.com/TobiaszCudnik/phpquery.git
+[submodule "javascripts/sigma"]
+	path = javascripts/sigma
+	url = https://github.com/jacomyal/sigma.js.git
+[submodule "javascripts/bubbletree"]
+	path = javascripts/bubbletree
+	url = https://github.com/okfn/bubbletree.git
 

file:a/about.php -> file:b/about.php
--- a/about.php
+++ b/about.php
@@ -7,10 +7,9 @@
     <h4 class="subheader">Lorem ipsum.</h4>
 </div>
 <h2> What is this? </h2>
-Disclosr is a project to monitor Australian Federal Government agencies 
+Disclo.gs is a project to monitor Australian Federal Government agencies 
 compliance with their <a href="http://www.oaic.gov.au/publications/other_operational/foi_policy_frequently_asked_questions.html#_Toc291837571">"proactive disclosure requirements"</a>.
-OGRE (Open Government Realization Evaluation) is a ranking of compliance with these requirements.
-Prometheus is the agent which polls agency websites to assess compliance.
+
 
 <h2> Open everything </h2>
 All documents released CC-BY 3 AU

--- /dev/null
+++ b/admin/conflicts.php
@@ -1,1 +1,48 @@
+<?php
 
+include_once('../include/common.inc.php');
+include_header();
+                require_once '../lib/php-diff/lib/Diff.php';
+                require_once '../lib/php-diff/lib/Diff/Renderer/Html/SideBySide.php';
+
+$db = $server->get_db('disclosr-agencies');
+
+try {
+    $rows = $db->get_view("app", "getConflicts", null, true)->rows;
+    //print_r($rows);
+    foreach ($rows as $row) {
+echo "<h2>".$row->id."</h2>";
+$request = Requests::get($serverAddr."disclosr-agencies/".$row->id);
+$origSort = object_to_array(json_decode($request->body));
+ksort($origSort);
+    $origDoc = explode(",",json_encode($origSort));
+	foreach($row->value as $conflictRev) {
+$conflictURL = $serverAddr."disclosr-agencies/".$row->id."?rev=".$conflictRev;
+$request = Requests::get($conflictURL);
+$conflictSort = object_to_array(json_decode($request->body));
+ksort($conflictSort);
+    $conflictDoc = explode(",",json_encode($conflictSort));
+echo "curl -X DELETE ".$conflictURL."<br>".PHP_EOL;
+                // Options for generating the diff
+                $options = array(
+                        //'ignoreWhitespace' => true,
+                        //'ignoreCase' => true,
+                );
+
+                // Initialize the diff class
+                $diff = new Diff($conflictDoc, $origDoc, $options);
+
+                // Generate a side by side diff
+                $renderer = new Diff_Renderer_Html_SideBySide;
+                echo $diff->Render($renderer);
+}
+die();
+	
+    }
+} catch (SetteeRestClientException $e) {
+    setteErrorHandler($e);
+}
+
+include_footer();
+?>
+

--- /dev/null
+++ b/admin/directory.gexf.php
@@ -1,1 +1,59 @@
+<?php
 
+$nodes = Array(Array("id" => "gov", "label" => "Federal Government"));
+$edges = Array();
+
+function addEdge($source, $target) {
+    global $edges;
+    $edges[] = Array("id" => md5($source . $target), "source" => $source, "target" => $target);
+}
+
+function addNode($id, $label, $pid) {
+    global $nodes;
+    $nodes[] = Array("id" => $id, "label" => $label , "pid" => $pid);
+}
+
+function addChildren($parentID, $parentXML) {
+    foreach ($parentXML as $childXML) {
+
+        if ($childXML->getName() == "organization" || $childXML->getName() == "organizationalUnit" || $childXML->getName() == "person") {
+            $attr = $childXML->attributes();
+            $id = $attr['UUID'];
+            if ($childXML->getName() == "organization" || $childXML->getName() == "organizationalUnit") {
+
+                $label = $childXML->name;
+            } else if ($childXML->getName() == "person") {
+                  $label = $childXML->fullName;
+            }
+            addNode($id, $label, $parentID);
+            addEdge($id, $parentID);
+            addChildren($id, $childXML);
+        }
+    }
+}
+
+if (file_exists('directoryexport.xml')) {
+    $xml = simplexml_load_file('directoryexport.xml');
+
+    addChildren("gov", $xml);
+} else {
+    exit('Failed to open directoryexport.xml');
+}
+  header('Content-Type: application/gexf+xml');
+echo '<?xml version="1.0" encoding="UTF-8"?>
+<gexf xmlns="http://www.gexf.net/1.2draft" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gexf.net/1.2draft http://www.gexf.net/1.2draft/gexf.xsd" version="1.2">
+    <graph mode="static" defaultedgetype="directed">
+        <nodes>';
+foreach ($nodes as $node) {
+    echo '          <node id="' . $node['id'] . '" label="' . htmlentities($node['label'],ENT_XML1) . '" ' . (isset($node['pid']) ? 'pid="' . $node['pid'] . '"' : "") . ' />';
+}
+echo '</nodes>
+        <edges>';
+foreach ($edges as $edge) {
+    echo '            <edge id="' . $edge['id'] . '" source="' . $edge['source'] . '" target="' . $edge['target'] . '" />';
+}
+echo '</edges>
+    </graph>
+</gexf>';
+?>
+

--- /dev/null
+++ b/admin/directoryexport.xml

--- a/admin/exportEmployees.csv.php
+++ b/admin/exportEmployees.csv.php
@@ -2,10 +2,16 @@
 
 include_once("../include/common.inc.php");
 
+$format = "csv";
+//$format = "json";
+if (isset($_REQUEST['format']))  $format = $_REQUEST['format'];
 
 setlocale(LC_CTYPE, 'C');
-
-$headers = Array("name");
+if ($format == "csv") {
+    $headers = Array("name");
+} else {
+    $headers = Array();
+}
 
 $db = $server->get_db('disclosr-agencies');
 try {
@@ -16,6 +22,7 @@
         if (isset($row->value->statistics->employees)) {
 
             $headers = array_unique(array_merge($headers, array_keys(object_to_array($row->value->statistics->employees))));
+
         }
     }
 } catch (SetteeRestClientException $e) {
@@ -24,31 +31,51 @@
 
 $fp = fopen('php://output', 'w');
 if ($fp && $db) {
-    header('Content-Type: text/csv; charset=utf-8');
-    header('Content-Disposition: attachment; filename="export.employeestats.' . date("c") . '.csv"');
+    if ($format == "csv") {
+        header('Content-Type: text/csv; charset=utf-8');
+        header('Content-Disposition: attachment; filename="export.employeestats.' . date("c") . '.csv"');
+    }
     header('Pragma: no-cache');
     header('Expires: 0');
-    fputcsv($fp, $headers);
+    if ($format == "csv") {
+        fputcsv($fp, $headers);
+    } else if ($format == "json") {
+        echo '{
+            "labels" : ["' . implode('","', $headers) . '"],'.PHP_EOL;
+    }
     try {
         $agencies = $db->get_view("app", "all", null, true)->rows;
         //print_r($agencies);
+        $first = true;
+        if ($format == "json") {
+        echo '"data" : ['.PHP_EOL;
+        
+        }
         foreach ($agencies as $agency) {
 
             if (isset($agency->value->statistics->employees)) {
                 $row = Array();
                 $agencyEmployeesArray = object_to_array($agency->value->statistics->employees);
-                foreach ($headers as $fieldName) {
-                    if ($fieldName == "name") {
-                        $row[] = $agency->value->name;
-                    } else if (isset($agencyEmployeesArray[$fieldName])) {
-                        $row[] = $agencyEmployeesArray[$fieldName]["value"];
+                foreach ($headers as $i => $fieldName) {
+                    if (isset($agencyEmployeesArray[$fieldName])) {
+                        $row[] = '['.$i.','.$agencyEmployeesArray[$fieldName]["value"].']';
                     } else {
-                        $row[] = 0;
+                        $row[] = '['.$i.',0]';
                     }
                 }
-
-                fputcsv($fp, array_values($row));
+                if ($format == "csv") {
+                    fputcsv($fp, array_values($row));
+                } else if ($format == "json") {
+                    if (!$first) echo ",";
+                    echo '{"data" : [' . implode(",", array_values($row)) . '], "label": "'.$agency->value->name.'", "lines" : { "show" : true }, "points" : { "show" : true }}'.PHP_EOL;
+                    $first = false;
+                }
             }
+        }
+        if ($format == "json") {
+        echo ']
+            }'.PHP_EOL;
+        
         }
     } catch (SetteeRestClientException $e) {
         setteErrorHandler($e);

--- /dev/null
+++ b/admin/exportScore.csv.php
@@ -1,1 +1,73 @@
+<?php
 
+include_once("../include/common.inc.php");
+
+$db = $server->get_db('disclosr-agencies');
+$format = "csv";
+//$format = "json";
+if (isset($_REQUEST['format']))  $format = $_REQUEST['format'];
+
+setlocale(LC_CTYPE, 'C');
+
+    $headers = Array();
+
+$fp = fopen('php://output', 'w');
+if ($fp && $db) {
+    if ($format == "csv") {
+        header('Content-Type: text/csv; charset=utf-8');
+        header('Content-Disposition: attachment; filename="export.score.' . date("c") . '.csv"');
+    }
+    header('Pragma: no-cache');
+    header('Expires: 0');
+    
+    try {
+        $agencies = $db->get_view("score", "score", null, true)->rows;
+        //print_r($agencies);
+        $first = true;
+        if ($format == "json") {
+        echo '"data" : ['.PHP_EOL;
+        
+        }
+        foreach ($agencies as $agency) {
+            $agencyArray = object_to_array($agency->value);
+            if ($first) {
+                $headers  = array_keys($agencyArray);
+if ($format == "csv") {
+        fputcsv($fp, $headers);
+    } else if ($format == "json") {
+        echo '{
+            "labels" : ["' . implode('","', $headers) . '"],'.PHP_EOL;
+    }
+            }
+                      $row = Array();
+            
+                foreach ($headers as $i => $fieldName) {
+                    if (isset($agencyArray[$fieldName])) {
+                        $row[] = $agencyArray[$fieldName];
+                    } else {
+                        $row[] = '';
+                    }
+                }
+                if ($format == "csv") {
+                    fputcsv($fp, array_values($row));
+                } else if ($format == "json") {
+                    if (!$first) echo ",";
+                    echo '{"data" : [' . implode(",", array_values($row)) . '], "label": "'.$agency->value->name.'", "lines" : { "show" : true }, "points" : { "show" : true }}'.PHP_EOL;
+                   
+                }
+                 $first = false;
+            }
+        
+        if ($format == "json") {
+        echo ']
+            }'.PHP_EOL;
+        
+        }
+    } catch (SetteeRestClientException $e) {
+        setteErrorHandler($e);
+    }
+
+    die;
+}
+?>
+

--- a/admin/importAPSCEmployees.php
+++ b/admin/importAPSCEmployees.php
@@ -32,23 +32,35 @@
                 @$sums[$id][$timePeriod] += $data[1];
             } else {
                 echo "<br>ERROR NAME MISSING FROM ID LIST<br><bR>" . PHP_EOL;
-                
+
                 die();
-               
             }
         }
         fclose($handle);
     }
 }
 foreach ($sums as $id => $sum) {
-    echo $id. "<br>" . PHP_EOL;
+    echo $id . "<br>" . PHP_EOL;
     $doc = $db->get($id);
-   // print_r($doc);
-    if (isset($doc->statistics)) $doc->statistics = Array();
+     echo $doc->name . "<br>" . PHP_EOL;
+    // print_r($doc);
+    $changed = false;
+    if (!isset($doc->statistics)) {
+        $changed = true;
+        $doc->statistics = Array();
+    }
     foreach ($sum as $timePeriod => $value) {
-        $doc->statistics["employees"][$timePeriod] = Array("value"=>$value, "source"=>"http://apsc.gov.au/stateoftheservice/");
+        if (!isset($doc->statistics->employees->$timePeriod->value) 
+                || $doc->statistics->employees->$timePeriod->value != $value) {
+            $changed = true;
+            $doc->statistics["employees"][$timePeriod] = Array("value" => $value, "source" => "http://apsc.gov.au/stateoftheservice/");
+        }
     }
-    $db->save($doc);
+    if ($changed) {
+        $db->save($doc);
+    } else {
+        echo "not changed" . "<br>" . PHP_EOL;
+    }
 }
 // employees: timeperiod, source = apsc state of service, value 
 ?>

--- /dev/null
+++ b/admin/importAustraliaGovAuGov2.php
@@ -1,1 +1,61 @@
+<?php
 
+require_once '../include/common.inc.php';
+
+$db = $server->get_db('disclosr-agencies');
+$rows = $db->get_view("app", "byName")->rows;
+$nametoid = Array();
+$accounts = Array();
+foreach ($rows as $row) {
+    $nametoid[trim($row->key)] = $row->value;
+}
+
+function extractCSVAccounts($url, $nameField, $accountField, $filter) {
+    global $accounts, $nametoid;
+    $request = Requests::get($url);
+    $Data = str_getcsv($request->body, "\n"); //parse the rows 
+    $headers = Array();
+    foreach ($Data as $num => $line) {
+        $Row = str_getcsv($line, ",");
+        if ($num == 0) {
+            
+        } else if ($num == 1) {
+            $headers = $Row;
+            //print_r($headers);
+        } else {
+            if (isset($Row[array_search($nameField, $headers)])) {
+                $agencyName = $Row[array_search($nameField, $headers)];
+                if (!$filter || $Row[array_search("State", $headers)] == "NAT") {
+                    if (!in_array(trim($agencyName), array_keys($nametoid))) {
+                        echo "$agencyName missing" . PHP_EOL;
+                    } else {
+                        // echo $Row[array_search($nameField, $headers)] . PHP_EOL;
+                    }
+                }
+            } else {
+                //echo "error finding agency" . $line . PHP_EOL;
+            }
+        }
+    }
+}
+
+// http://agimo.govspace.gov.au/page/gov2register/
+// twitter
+//extractCSVAccounts("https://docs.google.com/spreadsheet/pub?key=0Ap1exl80wB8OdHNKVmQ5RVlvQWpibDAxNHkzcU1nV2c&single=true&gid=0&output=csv", "Agency/Body/Event", "", true);
+// RSS
+// https://docs.google.com/spreadsheet/pub?hl=en_GB&hl=en_GB&key=0Ah41IAK0HzSTdGJxandJREhLSGlWWUZfZ2xKOTNHZ0E&output=csv
+// facebook 
+extractCSVAccounts("https://docs.google.com/spreadsheet/pub?hl=en_GB&hl=en_GB&key=0Ah41IAK0HzSTdGtjcW9vOXdyZ3pOV21vQU51VmhzQnc&single=true&gid=0&output=csv","Agency","Name");
+
+/*
+ * http://australia.gov.au/news-and-media/media-release-rss-feeds
+ * http://australia.gov.au/news-and-media/social-media/blogs
+ * http://australia.gov.au/news-and-media/social-media/twitter
+ * http://australia.gov.au/news-and-media/social-media/facebook
+ * http://australia.gov.au/news-and-media/social-media/youtube
+ * http://australia.gov.au/news-and-media/social-media/flickr
+ * http://australia.gov.au/news-and-media/social-media/apps http://www.harmony.gov.au/get-involved/app-downloads.htm http://www.em.gov.au/Resources/Pages/Before-the-Storm-phone-game.aspx
+ * http://australia.gov.au/news-and-media/social-media/podcasts
+ */
+?>
+

--- a/admin/importDirectoryUUIDs.php
+++ b/admin/importDirectoryUUIDs.php
@@ -1,13 +1,37 @@
 <?php
+
 // http://gold.gov.au/reports/department/index.xml
 require_once '../include/common.inc.php';
-try {
-    $server->create_db('disclosr-agencies');
-} catch (SetteeRestClientException $e) {
-    setteErrorHandler($e);
+$db = $server->get_db('disclosr-agencies');
+$rows = $db->get_view("app", "byName")->rows;
+$nametoid = Array();
+$sums = Array();
+foreach ($rows as $row) {
+    $nametoid[trim($row->key)] = $row->value;
 }
-$db = $server->get_db('disclosr-agencies');
-createAgencyDesignDoc();
 
+if (file_exists('index.xml')) {
+    $xml = simplexml_load_file('index.xml');
+
+    foreach ($xml as $agency) {
+        $names = Array();
+        $names[] = "".$agency->name;
+        
+        if (isset($agency->shortName)) {
+             $names[] = "".$agency->shortName;
+        }
+       foreach ($names as $name) {
+           if (!in_array($name, array_keys($nametoid))) {
+               echo "$name missing".PHP_EOL;
+               print_r($names);
+               echo $agency->dn;
+               echo PHP_EOL;
+               echo PHP_EOL;
+           }
+       }
+    }
+} else {
+    exit('Failed to open test.xml.');
+}
 ?>
 

--- a/admin/importGov2RegisterRSSFacebookTwitter.php
+++ b/admin/importGov2RegisterRSSFacebookTwitter.php
@@ -1,16 +1,100 @@
 <?php
 
 require_once '../include/common.inc.php';
-try {
-    $server->create_db('disclosr-agencies');
-} catch (SetteeRestClientException $e) {
-    setteErrorHandler($e);
+require($basePath . 'lib/phpquery/phpQuery/phpQuery.php');
+
+$db = $server->get_db('disclosr-agencies');
+$rows = $db->get_view("app", "byName")->rows;
+$nametoid = Array();
+$accounts = Array();
+foreach ($rows as $row) {
+    $nametoid[trim($row->key)] = $row->value;
 }
-$db = $server->get_db('disclosr-agencies');
-createAgencyDesignDoc();
 
-// twitter https://docs.google.com/spreadsheet/fm?id=tsJVd9EYoAjbl014y3qMgWg.03918275400592898296.8568379511161083736&hl=en&fmcmd=5&gid=0
-// RSS https://docs.google.com/spreadsheet/fm?id=tbqjwIDHKHiVYF_glJ93GgA.03918275400592898296.8789688748524615194&authkey=CJDP-uQG&hl=en_GB&fmcmd=5&gid=0
-// facebook https://docs.google.com/spreadsheet/fm?id=tkcqoo9wrgzNWmoANuVhsBw.03918275400592898296.3040387705062056060&authkey=CKzl7r0I&hl=en_GB&fmcmd=5&gid=0
+function extractHTMLAccounts($url, $accountType) {
+    global $accounts, $nametoid;
+    $request = Requests::get($url);
+    $doc = phpQuery::newDocumentHTML($request->body);
+    phpQuery::selectDocument($doc);
+    foreach (pq('tr')->elements as $tr) {
+        //echo $tr->nodeValue.PHP_EOL;
+        $agency = "";
+        $url = "";
+        foreach ($tr->childNodes as $td) {
+            $class = $td->getAttribute("class");
+            //echo "cccc $class ".$td->nodeValue.PHP_EOL;
+            if ($class == "s11" || $class == "s10" || $class == "s7") {
+                $agency = $td->nodeValue;
+            } else if ($class == "s6" || $class == "s9") {
+                $url = $td->nodeValue;
+                foreach ($td->childNodes as $a) {
+                    $href = $a->getAttribute("href");
+                    if ($href != "") {
+                        $url = $href;
+                    }
+                }
+            }
+        }
+        if ($agency != "" && $url != "") {
+            if (!in_array(trim($agency), array_keys($nametoid))) {
+                echo trim($agency) . " missing" . PHP_EOL;
+            } else {
+                //   echo $agency." = ".$url.PHP_EOL;
+                $accounts[$nametoid[trim($agency)]][$accountType][] = $url;
+            }
+        }
+    }
+}
+
+function extractCSVAccounts($url, $accountType, $nameField, $accountField, $filter) {
+    global $accounts, $nametoid;
+    $request = Requests::get($url);
+    $Data = str_getcsv($request->body, "\n"); //parse the rows 
+    $headers = Array();
+    foreach ($Data as $num => $line) {
+        $Row = str_getcsv($line, ",", '"');
+        if ($num == 0) {
+            
+        } else if ($num == 1) {
+            $headers = $Row;
+            //print_r($headers);
+        } else {
+            if (isset($Row[array_search($nameField, $headers)])) {
+                $agencyName = $Row[array_search($nameField, $headers)];
+                if (!$filter || $Row[array_search("State", $headers)] == "NAT") {
+                    if (!in_array(trim($agencyName), array_keys($nametoid))) {
+                        echo trim($agencyName) . " missing" . PHP_EOL;
+                    } else {
+                        // echo $Row[array_search($nameField, $headers)] . PHP_EOL;
+                        $accounts[$nametoid[trim($agencyName)]][$accountType][] = $Row[array_search($accountField, $headers)];
+                    }
+                }
+            } else {
+                //echo "error finding agency" . $line . PHP_EOL;
+            }
+        }
+    }
+}
+
+// http://agimo.govspace.gov.au/page/gov2register/
+// twitter
+extractCSVAccounts("https://docs.google.com/spreadsheet/pub?key=0Ap1exl80wB8OdHNKVmQ5RVlvQWpibDAxNHkzcU1nV2c&single=true&gid=0&output=csv", "Twitter", "Agency/Body/Event", "", true);
+// RSS
+extractHTMLAccounts("https://docs.google.com/spreadsheet/pub?hl=en_GB&hl=en_GB&key=0Ah41IAK0HzSTdGJxandJREhLSGlWWUZfZ2xKOTNHZ0E&output=html", "RSS");
+// facebook 
+extractHTMLAccounts("https://docs.google.com/spreadsheet/pub?hl=en_GB&hl=en_GB&key=0Ah41IAK0HzSTdGtjcW9vOXdyZ3pOV21vQU51VmhzQnc&single=true&gid=0&output=html", "Facebook");
+foreach ($accounts as $id => $accountTypes) {
+    echo $id . "<br>" . PHP_EOL;
+    $doc = object_to_array($db->get($id));
+    // print_r($doc);
+
+    foreach ($accountTypes as $accountType => $accounts) {
+        if (!isset($doc["has" . $accountType]) || !is_array($doc["has" . $accountType])) {
+            $doc["has" . $accountType] = Array();
+        }
+        $doc["has" . $accountType] = array_unique(array_merge($doc["has" . $accountType], $accounts));
+    }
+    $db->save($doc);
+}
 ?>
 

file:b/admin/index.xml (new)
--- /dev/null
+++ b/admin/index.xml
@@ -1,1 +1,2607 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<entryList>
+<department>
+<reportURI><![CDATA[http://www.directory.gov.au/reports/department/subreport321.rtf]]></reportURI>
+<websiteURI><![CDATA[/directory?ea0_lfz99_120.&&a581ffe4-b532-4d81-bae3-9e937c6104e8]]></websiteURI>
+<dn><![CDATA[ou=Aboriginal Hostels Limited (AHL),ou=Other Portfolio Bodies\, Committees\, Boards and Councils,o=Families\, Housing\, Community Services and Indigenous Affairs,o=Portfolios,o=Commonwealth of Australia,c=AU]]></dn>
+<name><![CDATA[Aboriginal Hostels Limited (AHL)]]></name>
+<phone><![CDATA[(02) 6212 2000]]></phone>
+<email><![CDATA[ahlmarketing@ahl.gov.au]]></email>
+<postalAddress><![CDATA[PO Box 30, Woden ACT 2606]]></postalAddress>
+<id><![CDATA[a581ffe4-b532-4d81-bae3-9e937c6104e8]]></id>
+<category>A</category>
+<lastModified><![CDATA[20101119150641.646+1100]]></lastModified>
+</department>
+<department>
+<reportURI><![CDATA[http://www.directory.gov.au/reports/department/subreport322.rtf]]></reportURI>
+<websiteURI><![CDATA[/directory?ea0_lfz99_120.&&e4471b59-3866-4e0e-bbca-260114348e3f]]></websiteURI>
+<dn><![CDATA[ou=Aboriginal Studies Press (ASP),ou=Australian Institute of Aboriginal and Torres Strait Islander Studies,ou=Other Portfolio Bodies\, Committees\, Boards and Councils,o=Innovation And Industry,o=Portfolios,o=Commonwealth of Australia,c=AU]]></dn>
+<name><![CDATA[Aboriginal Studies Press (ASP)]]></name>
+<phone><![CDATA[(02) 6246 1186]]></phone>
+<email><![CDATA[asp@aiatsis.gov.au]]></email>
+<postalAddress><![CDATA[GPO Box 553, Canberra ACT 2601]]></postalAddress>
+<id><![CDATA[e4471b59-3866-4e0e-bbca-260114348e3f]]></id>
+<category>A</category>
+<lastModified><![CDATA[20101007150855.716+1100]]></lastModified>
+</department>
+<department>
+<reportURI><![CDATA[http://www.directory.gov.au/reports/department/subreport323.rtf]]></reportURI>
+<websiteURI><![CDATA[/directory?ea0_lfz99_120.&&2410b559-3606-43f6-ba4d-5819b5d44dd8]]></websiteURI>
+<dn><![CDATA[ou=Administrative Appeals Tribunal,ou=Other Portfolio Bodies\, Committees\, Boards and Councils,o=Attorney-General,o=Portfolios,o=Commonwealth of Australia,c=AU]]></dn>
+<name><![CDATA[Administrative Appeals Tribunal]]></name>
+<shortName><![CDATA[AAT]]></shortName>
+<phone><![CDATA[1300 366 700]]></phone>
+<postalAddress><![CDATA[GPO Box 9955, Sydney NSW 2001]]></postalAddress>
+<id><![CDATA[2410b559-3606-43f6-ba4d-5819b5d44dd8]]></id>
+<category>A</category>
+<lastModified><![CDATA[20110322172221.506+1100]]></lastModified>
+</department>
+<department>
+<reportURI><![CDATA[http://www.directory.gov.au/reports/department/subreport324.rtf]]></reportURI>
+<websiteURI><![CDATA[/directory?ea0_lfz99_120.&&9a72269b-2d86-4213-9809-b310d8fb8242]]></websiteURI>
+<dn><![CDATA[ou=Aged Care Standards and Accreditation Agency Ltd,ou=Other Portfolio Bodies\, Committees\, Boards and Councils,o=Health and Ageing,o=Portfolios,o=Commonwealth of Australia,c=AU]]></dn>
+<name><![CDATA[Aged Care Standards and Accreditation Agency Ltd]]></name>
+<phone><![CDATA[(02) 9633 1711]]></phone>
+<email><![CDATA[national@accreditation.org.au]]></email>
+<postalAddress><![CDATA[PO Box 773, Parramatta NSW 2124]]></postalAddress>
+<id><![CDATA[9a72269b-2d86-4213-9809-b310d8fb8242]]></id>
+<category>A</category>
+<lastModified><![CDATA[20110316162117.955+1100]]></lastModified>
+</department>
+<department>
+<reportURI><![CDATA[http://www.directory.gov.au/reports/department/subreport325.rtf]]></reportURI>
+<websiteURI><![CDATA[/directory?ea0_lfz99_120.&&f6c7b75c-199a-4a83-873c-06aa2ff80b79]]></websiteURI>
+<dn><![CDATA[ou=Air Force Headquarters,ou=Department of Defence,o=Defence,o=Portfolios,o=Commonwealth of Australia,c=AU]]></dn>
+<name><![CDATA[Air Force Headquarters]]></name>
+<id><![CDATA[f6c7b75c-199a-4a83-873c-06aa2ff80b79]]></id>
+<category>A</category>
+<lastModified><![CDATA[20110927141313.630+1000]]></lastModified>
+</department>
+<department>
+<reportURI><![CDATA[http://www.directory.gov.au/reports/department/subreport326.rtf]]></reportURI>
+<websiteURI><![CDATA[/directory?ea0_lfz99_120.&&3abaa317-dfc0-4469-a07c-3d69e9bb1c38]]></websiteURI>
+<dn><![CDATA[ou=Airservices Australia,ou=Other Portfolio Bodies\, Committees\, Boards and Councils,o=Infrastructure and Transport,o=Portfolios,o=Commonwealth of Australia,c=AU]]></dn>
+<name><![CDATA[Airservices Australia]]></name>
+<shortName><![CDATA[Airservices]]></shortName>
+<phone><![CDATA[(02) 6268 4111]]></phone>
+<postalAddress><![CDATA[Airservices Australia, GPO Box 367, Canberra ACT 2601]]></postalAddress>
+<id><![CDATA[3abaa317-dfc0-4469-a07c-3d69e9bb1c38]]></id>
+<category>A</category>
+<lastModified><![CDATA[20100624173807.346+1000]]></lastModified>
+</department>
+<department>
+<reportURI><![CDATA[http://www.directory.gov.au/reports/department/subreport327.rtf]]></reportURI>
+<websiteURI><![CDATA[/directory?ea0_lfz99_120.&&0269409f-9ffb-4d37-adfd-d98d4f75c30a]]></websiteURI>
+<dn><![CDATA[ou=Albury-Wodonga Corporation,ou=Other Portfolio Bodies\, Committees\, Boards and Councils,o=Finance and Deregulation,o=Portfolios,o=Commonwealth of Australia,c=AU]]></dn>
+<name><![CDATA[Albury-Wodonga Corporation]]></name>
+<shortName><![CDATA[AWC]]></shortName>
+<phone><![CDATA[(02) 6023 8000]]></phone>
+<email><![CDATA[awc@awc.gov.au]]></email>
+<postalAddress><![CDATA[PO Box 913, Albury NSW 2640]]></postalAddress>
+<id><![CDATA[0269409f-9ffb-4d37-adfd-d98d4f75c30a]]></id>
+<category>A</category>
+<lastModified><![CDATA[20120118093718.197+1100]]></lastModified>
+</department>
+<department>
+<reportURI><![CDATA[http://www.directory.gov.au/reports/department/subreport328.rtf]]></reportURI>
+<websiteURI><![CDATA[/directory?ea0_lfz99_120.&&47820771-fcb1-4277-9423-96c18c715c7e]]></websiteURI>
+<dn><![CDATA[ou=AMC Search Ltd,ou=Australian Maritime College,ou=Other Portfolio Bodies\, Committees\, Boards and Councils,o=Infrastructure and Transport,o=Portfolios,o=Commonwealth of Australia,c=AU]]></dn>
+<name><![CDATA[AMC Search Ltd]]></name>
+<phone><![CDATA[(03) 6335 4850]]></phone>
+<postalAddress><![CDATA[AMC Search Ltd, Australian Maritime College, PO Box 986, Launceston TAS 7250]]></postalAddress>
+<id><![CDATA[47820771-fcb1-4277-9423-96c18c715c7e]]></id>
+<category>A</category>
+<lastModified><![CDATA[20080613122607.525+1000]]></lastModified>
+</department>
+<department>
+<reportURI><![CDATA[http://www.directory.gov.au/reports/department/subreport329.rtf]]></reportURI>
+<websiteURI><![CDATA[/directory?ea0_lfz99_120.&&364e2973-e795-47b2-90f2-76bb9819207b]]></websiteURI>
+<dn><![CDATA[ou=Army Headquarters,ou=Department of Defence,o=Defence,o=Portfolios,o=Commonwealth of Australia,c=AU]]></dn>
+<name><![CDATA[Army Headquarters]]></name>
+<id><![CDATA[364e2973-e795-47b2-90f2-76bb9819207b]]></id>
+<category>A</category>
+<lastModified><![CDATA[20100624173848.550+1000]]></lastModified>