Summary for the final exam of 188.921 Web Science at Vienna University of Technology.
It is available here
chapter 1
Studying the web lets you learn something about society. It is interdisciplinary. Challenges are - identify useful data - deal with winner takes all phenomenon in networks
Network structure
Levels of analysis
- Element level
- what is the most important element / how important is it
- centrality indices (degree, betweenness, closeness, pagerank, hub & authorities)
- Group level
- communities of common interests / preferences
- decomposition into natural groups
- local density analysis (clicques, clustering)
- connectivity (strongly connected components)
- Network level
- statistical propertis of large graphs
- analysis of large networks
- power law winner takes all (preferential attachment, scale free network)
- small world property: average distance very short
- structure of web is similar to bowtie, one huge strongly connected component
Social network analysis assumptions
- structural relations are more important than observed behaviour (age, ideology, gender)
- social relations affect actions, beliefs of individuals
- structural relations are dynamic
Bavelas experiemts with structures ( descriptive)
- The wheel (star ) and Y were considerably faster, on average, than the chain and circle.
Stanley Milgram - small world experiment
chapter 2 - BASIC CONCEPTS OF NETWORK THEORY
Königsberg Bridge Problem
- pass through all the edges without visiting one twice
- route only exist if at most two vertices with odd degree exist
Metrics - Degree number of edges of a node - indegree #Incoming edges - outdegreee #ofOutgoing - average xxDegree average of one of the degrees menitoned before
Total number of eges
- undirected \(L=\frac{1}{2}\sum_{i=1}^{N}k_i\)
- directed \(L=\frac{1}{N}\sum_{i=1}^{N}k_i= \frac{2L}{N}\)
Average in degree = average outdegree for a directed network which is \(\frac{L}{N}\)
Adjacency matrix - defines the connections - often rather sparse - Convention: The direction of the edge runs form the second index to the first. (ie.e form top to left) - symmetric in case of undirected graphs - weighted graph as something else than 0,1 in the matrix - diagonal is 0 means no self loops 
complete graph
- edge between each pair of vertices
- undirected max number of edges \(L=\frac{1}{2}N(N-1)\)
- directed max number of edges \(L=N(N-1)\)
density
- defined as the number of edges divided by maximum possible number of edges
- undirected \(p=\frac{L}{L_{max}}=\frac{2L}{N(N-1)}\)
- directed \(p=\frac{L}{L_{max}}=\frac{L}{N(N-1)}\)
Path - number of edges (hops) required to connect form A to B - distance is defined as shortest path - average distanc is mean of finite distances (i.e., shortest paths) between all pairs of vertices
- cycle: at least three edges, if first and last vertex are the same - eulerian path: path which traverses each edge exactly once - diameter is longest distnace between all paris of vertices 
practical exercises
Adjacency matrix
- Write down the corresponding adjacency matrices
- What is the average degree in each of the networks?
Density
- calculate network densities for a given network
Paths
- How many paths (with possible repetition of nodes and links) of length 3 exist in the network starting from node 1 and ending at node 3?
- What is the average distance in the network? And what the diameter?
- What is the length of the longest cycle in the network?
- Is there an Eulerian Path?
chapter 2.1 - BASIC CONCEPTS OF NETWORK THEORY (CONT.)
connectivity
- unidrected is connectd if there exists a path from every vertex to every other vertex
- directed is strongly connected if there is a directed path from every node to every other noded
- directed is weakly conneced if the path from every node to every other node exists only when ignoring the direction of the edges
connected component
- subgraph is using a subset of the vertices and edges of the original graph
- connected component is forming a subgraph with the maximal number of connected vertices
- when the graph is not connected the adjacency matrix can be rearranged to a block diagonal form
- for a directed graph
- out components are the paths starting at A and including A
- in paths which pass through A’s in part
- giant component contains significant fraction of all the nodes usually only one
network data representation
types of networks
- full network: contains all the nodes and edges, all entities are treated equally
- partial network: usually it is not possible to obtain a full network (i.e. twitter rate limit, or the full network is too large), is a subgraph
- egonetwork: consider networks from an entities point of view (my followers), may extend to any number of degrees from the ego (friends of friends)
- unimodal: contain only one type of vertex
- multimodal: vertices of different kinds are included
- bipartite network: multimodal with exactly 2 types of vertices ( groups and individuals, posts and comments)
- bipartite graph: vertices devided into disjoint sets that there only is an edge from one set to the other, no edges between vertices from the same edge
- multiplex networks have multiple types of connections
one mode projection
- transforms bipartite graphs into separate unimodal networks by two one mode projections
- possible loss of information
- example: recommendersystem books and likes
- people are connected if they like the same book
- books are connected if the same person likes them
practical part
- How many connected components are there in the network? What are their sizes? Are they weakly or strongly connected?
- Which nodes constitute the largest strongly connected component (SCC) of F?
- Which nodes belong to the IN-component of this SCC? Which nodes to its OUT-component?
Name an edge you could add to increase the size of the SCC
- Write down the incidence matrix of the bipartite network.
- Construct the adjacency matrix of its two projections, on the purple and on the green nodes, respectively.
- What is the maximum number of links Lmax the network can have?
How many links cannot occur compared to a non-bipartite, undirected network of size N = N1 + N2?
chapter 3 - CENTRALITY INDICES
todos for me
- do the exercises
- learn all the slides
LS0tCnRpdGxlOiAiV2ViIFNjaWVuY2UgU3VtbWFyeSIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKU3VtbWFyeSBmb3IgdGhlIGZpbmFsIGV4YW0gb2YgWzE4OC45MjEgV2ViIFNjaWVuY2VdKGh0dHBzOi8vdGlzcy50dXdpZW4uYWMuYXQvY291cnNlL2VkdWNhdGlvbkRldGFpbHMueGh0bWw/d2luZG93SWQ9YWRlJnNlbWVzdGVyPTIwMTZXJmNvdXJzZU5yPTE4ODkyMSkgYXQgVmllbm5hIFVuaXZlcnNpdHkgb2YgVGVjaG5vbG9neS4KCltJdCBpcyBhdmFpbGFibGUgaGVyZV0oaHR0cDovL3JwdWJzLmNvbS9nZW9IZWlsL3dlYlNjaWVuY2VTdW1tYXJ5KQoKIyMgU29tZSBnb29kIHJlYWRpbmdzCi0gaHR0cDovL3d3dy5jcy5jb3JuZWxsLmVkdS9ob21lL2tsZWluYmVyL25ldHdvcmtzLWJvb2svCi0gaHR0cDovL2JhcmFiYXNpLmNvbS9uZXR3b3Jrc2NpZW5jZWJvb2svCgojIyBUb29scyB1c2VkIGluIHRoZSBjb3Vyc2UKCi0gaWdyYXBoCi0gZ2VwaGkKLSBodHRwOi8vd3d3LmN5dG9zY2FwZS5vcmcvCgojIGNoYXB0ZXIgMQoKU3R1ZHlpbmcgdGhlIHdlYiBsZXRzIHlvdSBsZWFybiBzb21ldGhpbmcgYWJvdXQgc29jaWV0eS4gSXQgaXMgaW50ZXJkaXNjaXBsaW5hcnkuCkNoYWxsZW5nZXMgYXJlCiAtIGlkZW50aWZ5IHVzZWZ1bCBkYXRhCiAtIGRlYWwgd2l0aCB3aW5uZXIgdGFrZXMgYWxsIHBoZW5vbWVub24gaW4gbmV0d29ya3MKIAojIyBOZXR3b3JrIHN0cnVjdHVyZQotIHZlcnRpY2VzCi0gZWRnZXMKCkxldmVscyBvZiBhbmFseXNpcwoKLSBFbGVtZW50IGxldmVsCiAgICAtIHdoYXQgaXMgdGhlIG1vc3QgaW1wb3J0YW50IGVsZW1lbnQgLyBob3cgaW1wb3J0YW50IGlzIGl0CiAgICAtIGNlbnRyYWxpdHkgaW5kaWNlcyAoZGVncmVlLCBiZXR3ZWVubmVzcywgY2xvc2VuZXNzLCBwYWdlcmFuaywgaHViICYgYXV0aG9yaXRpZXMpCi0gR3JvdXAgbGV2ZWwKICAgIC0gY29tbXVuaXRpZXMgb2YgY29tbW9uIGludGVyZXN0cyAvIHByZWZlcmVuY2VzCiAgICAtIGRlY29tcG9zaXRpb24gaW50byBuYXR1cmFsIGdyb3VwcwogICAgLSBsb2NhbCBkZW5zaXR5IGFuYWx5c2lzIChjbGljcXVlcywgY2x1c3RlcmluZykKICAgIC0gY29ubmVjdGl2aXR5IChzdHJvbmdseSBjb25uZWN0ZWQgY29tcG9uZW50cykKLSBOZXR3b3JrIGxldmVsCiAgICAtIHN0YXRpc3RpY2FsIHByb3BlcnRpcyBvZiBsYXJnZSBncmFwaHMKICAgIC0gYW5hbHlzaXMgb2YgbGFyZ2UgbmV0d29ya3MKICAgIC0gcG93ZXIgbGF3IHdpbm5lciB0YWtlcyBhbGwgKHByZWZlcmVudGlhbCBhdHRhY2htZW50LCBzY2FsZSBmcmVlIG5ldHdvcmspCiAgICAtIHNtYWxsIHdvcmxkIHByb3BlcnR5OiBhdmVyYWdlIGRpc3RhbmNlIHZlcnkgc2hvcnQKICAgIC0gc3RydWN0dXJlIG9mIHdlYiBpcyBzaW1pbGFyIHRvIGJvd3RpZSwgb25lIGh1Z2Ugc3Ryb25nbHkgY29ubmVjdGVkIGNvbXBvbmVudAogIApTb2NpYWwgbmV0d29yayBhbmFseXNpcyBhc3N1bXB0aW9ucwoKLSBzdHJ1Y3R1cmFsIHJlbGF0aW9ucyBhcmUgbW9yZSBpbXBvcnRhbnQgdGhhbiBvYnNlcnZlZCBiZWhhdmlvdXIgKGFnZSwgaWRlb2xvZ3ksIGdlbmRlcikKLSBzb2NpYWwgcmVsYXRpb25zIGFmZmVjdCBhY3Rpb25zLCBiZWxpZWZzIG9mIGluZGl2aWR1YWxzCi0gc3RydWN0dXJhbCByZWxhdGlvbnMgYXJlIGR5bmFtaWMgCiAgCkJhdmVsYXMgZXhwZXJpZW10cyB3aXRoIHN0cnVjdHVyZXMgKCBkZXNjcmlwdGl2ZSkKCi0gVGhlIHdoZWVsIChzdGFyICkgYW5kIFkgd2VyZSBjb25zaWRlcmFibHkgZmFzdGVyLCBvbiBhdmVyYWdlLCB0aGFuIHRoZSBjaGFpbiBhbmQgY2lyY2xlLgogIApTdGFubGV5IE1pbGdyYW0gLSBzbWFsbCB3b3JsZCBleHBlcmltZW50CgogIC0gTGV0dGVyIHNob3VsZCByZWFjaCB0YXJnZXQgYXMgc29vbiBhcyBwb3NzaWJsZSwgc28gaXQgYmUgZm9yd2FyZGVkIHRvIHBlcnNvbiB0aGF0IGtub3dzIHRhcmdldCBtb3JlIGxpa2VseQogIC0gYnV0IG9ubHkgY2xvc2UgZnJpZW5kcyB3ZXJlIGFsbG93ZWQgYXMgZGVzdGluYXRpb24sIG5vIGRpcmVjdCBjb25uZWN0aW9uCiAgLSBxdWl0ZSBzb21lIGxldHRlcnMgYXJyaXZlYyBjb3JyZWN0bHkKICAtIGludGVyZXN0aW5nbHkgYXZlcmFnZSBwYXRoIGxlbmd0aCB3YXMgdmVyeSBzbWFsbCAoNikKRXJkw7ZzIG51bWJlcgoKICAtIHNhbWUgY29uY2VwdAogIAojIGNoYXB0ZXIgMiAtIEJBU0lDIENPTkNFUFRTIE9GIE5FVFdPUksgVEhFT1JZCkvDtm5pZ3NiZXJnIEJyaWRnZSBQcm9ibGVtCgotIHBhc3MgdGhyb3VnaCBhbGwgdGhlIGVkZ2VzIHdpdGhvdXQgdmlzaXRpbmcgb25lIHR3aWNlCi0gcm91dGUgb25seSBleGlzdCBpZiBhdCBtb3N0IHR3byB2ZXJ0aWNlcyB3aXRoIG9kZCBkZWdyZWUgZXhpc3QKICAgIApNZXRyaWNzCi0gRGVncmVlIG51bWJlciBvZiBlZGdlcyBvZiBhIG5vZGUKLSBpbmRlZ3JlZSAjSW5jb21pbmcgZWRnZXMKLSBvdXRkZWdyZWVlICNvZk91dGdvaW5nCi0gYXZlcmFnZSB4eERlZ3JlZSBhdmVyYWdlIG9mIG9uZSBvZiB0aGUgZGVncmVlcyBtZW5pdG9uZWQgYmVmb3JlCgoKVG90YWwgbnVtYmVyIG9mIGVnZXMKCi0gdW5kaXJlY3RlZCAkTD1cZnJhY3sxfXsyfVxzdW1fe2k9MX1ee059a19pJAotIGRpcmVjdGVkICRMPVxmcmFjezF9e059XHN1bV97aT0xfV57Tn1rX2k9IFxmcmFjezJMfXtOfSQKCkF2ZXJhZ2UgaW4gZGVncmVlID0gYXZlcmFnZSBvdXRkZWdyZWUgZm9yIGEgZGlyZWN0ZWQgbmV0d29yayB3aGljaCBpcyAkXGZyYWN7TH17Tn0kCgpBZGphY2VuY3kgbWF0cml4Ci0gZGVmaW5lcyB0aGUgY29ubmVjdGlvbnMKLSBvZnRlbiByYXRoZXIgc3BhcnNlCi0gQ29udmVudGlvbjogVGhlIGRpcmVjdGlvbiBvZiB0aGUgZWRnZSBydW5zIGZvcm0gdGhlIHNlY29uZCBpbmRleCB0byB0aGUgZmlyc3QuIChpZS5lIGZvcm0gdG9wIHRvIGxlZnQpCi0gc3ltbWV0cmljIGluIGNhc2Ugb2YgdW5kaXJlY3RlZCBncmFwaHMgCi0gd2VpZ2h0ZWQgZ3JhcGggYXMgc29tZXRoaW5nIGVsc2UgdGhhbiAwLDEgaW4gdGhlIG1hdHJpeAotIGRpYWdvbmFsIGlzIDAgbWVhbnMgbm8gc2VsZiBsb29wcwohW0V4YW1wbGVdKGZmZi9hZGpEaXIuanBnICJBZGphY2VuY3kgZXhhbXBsZSBkaXJlY3RlZCIpCgpjb21wbGV0ZSBncmFwaAoKLSBlZGdlIGJldHdlZW4gZWFjaCBwYWlyIG9mIHZlcnRpY2VzCi0gdW5kaXJlY3RlZCBtYXggbnVtYmVyIG9mIGVkZ2VzICRMPVxmcmFjezF9ezJ9TihOLTEpJAotIGRpcmVjdGVkIG1heCBudW1iZXIgb2YgZWRnZXMgJEw9TihOLTEpJAoKZGVuc2l0eQoKLSBkZWZpbmVkIGFzIHRoZSBudW1iZXIgb2YgZWRnZXMgZGl2aWRlZCBieSBtYXhpbXVtIHBvc3NpYmxlIG51bWJlciBvZiBlZGdlcwotIHVuZGlyZWN0ZWQgJHA9XGZyYWN7TH17TF97bWF4fX09XGZyYWN7Mkx9e04oTi0xKX0kCi0gZGlyZWN0ZWQgJHA9XGZyYWN7TH17TF97bWF4fX09XGZyYWN7TH17TihOLTEpfSQKClBhdGgKLSBudW1iZXIgb2YgZWRnZXMgKGhvcHMpIHJlcXVpcmVkIHRvIGNvbm5lY3QgZm9ybSBBIHRvIEIKLSBkaXN0YW5jZSBpcyBkZWZpbmVkIGFzIHNob3J0ZXN0IHBhdGgKLSBhdmVyYWdlIGRpc3RhbmMgaXMgbWVhbiBvZiBmaW5pdGUgZGlzdGFuY2VzIChpLmUuLCBzaG9ydGVzdCBwYXRocykgYmV0d2VlbiBhbGwgcGFpcnMgb2YgdmVydGljZXMKIVtFeGFtcGxlXShmZmYvYXZnUGxlbi5qcGcgIkF2ZXJhZ2UgZGlzdGFuY2UiKQotIGN5Y2xlOiBhdCBsZWFzdCB0aHJlZSBlZGdlcywgaWYgZmlyc3QgYW5kIGxhc3QgdmVydGV4IGFyZSB0aGUgc2FtZQotIGV1bGVyaWFuIHBhdGg6IHBhdGggd2hpY2ggdHJhdmVyc2VzIGVhY2ggZWRnZSBleGFjdGx5IG9uY2UKLSBkaWFtZXRlciBpcyBsb25nZXN0IGRpc3RuYWNlIGJldHdlZW4gYWxsIHBhcmlzIG9mIHZlcnRpY2VzCiFbRXhhbXBsZV0oZmZmL2RpYW1ldGVyLmpwZyAiZGlhbWV0ZXIiKQoKCiMjIyBwcmFjdGljYWwgZXhlcmNpc2VzCkFkamFjZW5jeSBtYXRyaXgKCi0gV3JpdGUgZG93biB0aGUgY29ycmVzcG9uZGluZyBhZGphY2VuY3kgbWF0cmljZXMKLSBXaGF0IGlzIHRoZSBhdmVyYWdlIGRlZ3JlZSBpbiBlYWNoIG9mIHRoZSBuZXR3b3Jrcz8KCkRlbnNpdHkKCi0gY2FsY3VsYXRlIG5ldHdvcmsgZGVuc2l0aWVzIGZvciBhIGdpdmVuIG5ldHdvcmsKClBhdGhzCgotIEhvdyBtYW55IHBhdGhzICh3aXRoIHBvc3NpYmxlIHJlcGV0aXRpb24gb2Ygbm9kZXMgYW5kIGxpbmtzKSBvZiBsZW5ndGggMyBleGlzdCBpbiB0aGUgbmV0d29yayBzdGFydGluZyBmcm9tIG5vZGUgMSBhbmQgZW5kaW5nIGF0IG5vZGUgMz8KLSBXaGF0IGlzIHRoZSBhdmVyYWdlIGRpc3RhbmNlIGluIHRoZSBuZXR3b3JrPyBBbmQgd2hhdCB0aGUgZGlhbWV0ZXI/Ci0gV2hhdCBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IGN5Y2xlIGluIHRoZSBuZXR3b3JrPwotIElzIHRoZXJlIGFuIEV1bGVyaWFuIFBhdGg/CgojIGNoYXB0ZXIgMi4xIC0gQkFTSUMgQ09OQ0VQVFMgT0YgTkVUV09SSyBUSEVPUlkgKENPTlQuKQoKY29ubmVjdGl2aXR5CgotIHVuaWRyZWN0ZWQgaXMgY29ubmVjdGQgaWYgdGhlcmUgZXhpc3RzIGEgcGF0aCBmcm9tIGV2ZXJ5IHZlcnRleCB0byBldmVyeSBvdGhlciB2ZXJ0ZXgKLSBkaXJlY3RlZCBpcyBzdHJvbmdseSBjb25uZWN0ZWQgaWYgdGhlcmUgaXMgYSBkaXJlY3RlZCBwYXRoIGZyb20gZXZlcnkgbm9kZSB0byBldmVyeSBvdGhlciBub2RlZAotIGRpcmVjdGVkIGlzIHdlYWtseSBjb25uZWNlZCBpZiB0aGUgcGF0aCBmcm9tIGV2ZXJ5IG5vZGUgdG8gZXZlcnkgb3RoZXIgbm9kZSBleGlzdHMgb25seSB3aGVuIGlnbm9yaW5nIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGVkZ2VzCgpjb25uZWN0ZWQgY29tcG9uZW50CgotIHN1YmdyYXBoIGlzIHVzaW5nIGEgc3Vic2V0IG9mIHRoZSB2ZXJ0aWNlcyBhbmQgZWRnZXMgb2YgdGhlIG9yaWdpbmFsIGdyYXBoCi0gY29ubmVjdGVkIGNvbXBvbmVudCBpcyBmb3JtaW5nIGEgc3ViZ3JhcGggd2l0aCB0aGUgbWF4aW1hbCBudW1iZXIgb2YgY29ubmVjdGVkIHZlcnRpY2VzCi0gd2hlbiB0aGUgZ3JhcGggaXMgbm90IGNvbm5lY3RlZCB0aGUgYWRqYWNlbmN5IG1hdHJpeCBjYW4gYmUgcmVhcnJhbmdlZCB0byBhIGJsb2NrIGRpYWdvbmFsIGZvcm0KLSBmb3IgYSBkaXJlY3RlZCBncmFwaAogICAgLSBvdXQgY29tcG9uZW50cyBhcmUgdGhlIHBhdGhzIHN0YXJ0aW5nIGF0IEEgYW5kIGluY2x1ZGluZyBBCiAgICAtIGluIHBhdGhzIHdoaWNoIHBhc3MgdGhyb3VnaCBBJ3MgaW4gcGFydAotIGdpYW50IGNvbXBvbmVudCBjb250YWlucyBzaWduaWZpY2FudCBmcmFjdGlvbiBvZiBhbGwgdGhlIG5vZGVzIHVzdWFsbHkgb25seSBvbmUKCm5ldHdvcmsgZGF0YSByZXByZXNlbnRhdGlvbgoKLSBtYXRyaXgKLSBlZGdlIGxpc3QKLSBncmFwaAoKdHlwZXMgb2YgbmV0d29ya3MKCi0gZnVsbCBuZXR3b3JrOiBjb250YWlucyBhbGwgdGhlIG5vZGVzIGFuZCBlZGdlcywgYWxsIGVudGl0aWVzIGFyZSB0cmVhdGVkIGVxdWFsbHkKLSBwYXJ0aWFsIG5ldHdvcms6IHVzdWFsbHkgaXQgaXMgbm90IHBvc3NpYmxlIHRvIG9idGFpbiBhIGZ1bGwgbmV0d29yayAoaS5lLiB0d2l0dGVyIHJhdGUgbGltaXQsIG9yIHRoZSBmdWxsIG5ldHdvcmsgaXMgdG9vIGxhcmdlKSwgaXMgYSBzdWJncmFwaAotIGVnb25ldHdvcms6IGNvbnNpZGVyIG5ldHdvcmtzIGZyb20gYW4gZW50aXRpZXMgcG9pbnQgb2YgdmlldyAobXkgZm9sbG93ZXJzKSwgbWF5IGV4dGVuZCB0byBhbnkgbnVtYmVyIG9mIGRlZ3JlZXMgZnJvbSB0aGUgZWdvIChmcmllbmRzIG9mIGZyaWVuZHMpCi0gdW5pbW9kYWw6IGNvbnRhaW4gb25seSBvbmUgdHlwZSBvZiB2ZXJ0ZXgKLSBtdWx0aW1vZGFsOiB2ZXJ0aWNlcyBvZiBkaWZmZXJlbnQga2luZHMgYXJlIGluY2x1ZGVkCi0gYmlwYXJ0aXRlIG5ldHdvcms6IG11bHRpbW9kYWwgd2l0aCBleGFjdGx5IDIgdHlwZXMgb2YgdmVydGljZXMgKCBncm91cHMgYW5kIGluZGl2aWR1YWxzLCBwb3N0cyBhbmQgY29tbWVudHMpCi0gYmlwYXJ0aXRlIGdyYXBoOiB2ZXJ0aWNlcyBkZXZpZGVkIGludG8gZGlzam9pbnQgc2V0cyB0aGF0IHRoZXJlIG9ubHkgaXMgYW4gZWRnZSBmcm9tIG9uZSBzZXQgdG8gdGhlIG90aGVyLCBubyBlZGdlcyBiZXR3ZWVuIHZlcnRpY2VzIGZyb20gdGhlIHNhbWUgZWRnZQotIG11bHRpcGxleCBuZXR3b3JrcyBoYXZlIG11bHRpcGxlIHR5cGVzIG9mIGNvbm5lY3Rpb25zCgpvbmUgbW9kZSBwcm9qZWN0aW9uCgotIHRyYW5zZm9ybXMgYmlwYXJ0aXRlIGdyYXBocyBpbnRvIHNlcGFyYXRlIHVuaW1vZGFsIG5ldHdvcmtzIGJ5IHR3byBvbmUgbW9kZSBwcm9qZWN0aW9ucyAKLSBwb3NzaWJsZSBsb3NzIG9mIGluZm9ybWF0aW9uCi0gZXhhbXBsZTogcmVjb21tZW5kZXJzeXN0ZW0gYm9va3MgYW5kIGxpa2VzCiAgICAtIHBlb3BsZSBhcmUgY29ubmVjdGVkIGlmIHRoZXkgbGlrZSB0aGUgc2FtZSBib29rCiAgICAtIGJvb2tzIGFyZSBjb25uZWN0ZWQgaWYgdGhlIHNhbWUgcGVyc29uIGxpa2VzIHRoZW0KCiMjIyBwcmFjdGljYWwgcGFydAoKLSBIb3cgbWFueSBjb25uZWN0ZWQgY29tcG9uZW50cyBhcmUgdGhlcmUgaW4gdGhlIG5ldHdvcms/IFdoYXQgYXJlIHRoZWlyIHNpemVzPyBBcmUgdGhleSB3ZWFrbHkgb3Igc3Ryb25nbHkgY29ubmVjdGVkPwotIFdoaWNoIG5vZGVzIGNvbnN0aXR1dGUgdGhlIGxhcmdlc3Qgc3Ryb25nbHkgY29ubmVjdGVkIGNvbXBvbmVudCAoU0NDKSBvZiBGPwotIFdoaWNoIG5vZGVzIGJlbG9uZyB0byB0aGUgSU4tY29tcG9uZW50IG9mIHRoaXMgU0NDPyBXaGljaCBub2RlcyB0byBpdHMgT1VULWNvbXBvbmVudD8KLSBOYW1lIGFuIGVkZ2UgeW91IGNvdWxkIGFkZCB0byBpbmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgU0NDCgotIFdyaXRlIGRvd24gdGhlIGluY2lkZW5jZSBtYXRyaXggb2YgdGhlIGJpcGFydGl0ZSBuZXR3b3JrLgotIENvbnN0cnVjdCB0aGUgYWRqYWNlbmN5IG1hdHJpeCBvZiBpdHMgdHdvIHByb2plY3Rpb25zLCBvbiB0aGUgcHVycGxlIGFuZCBvbiB0aGUgZ3JlZW4gbm9kZXMsIHJlc3BlY3RpdmVseS4KLSBXaGF0IGlzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBsaW5rcyBMbWF4IHRoZSBuZXR3b3JrIGNhbgpoYXZlPwotIEhvdyBtYW55IGxpbmtzIGNhbm5vdCBvY2N1ciBjb21wYXJlZCB0byBhIG5vbi1iaXBhcnRpdGUsIHVuZGlyZWN0ZWQgbmV0d29yayBvZiBzaXplIE4gPSBOMSArIE4yPwoKIyBjaGFwdGVyIDMgLSBDRU5UUkFMSVRZIElORElDRVMKCgoKIyB0b2RvcyBmb3IgbWUKCi0gZG8gdGhlIGV4ZXJjaXNlcwotIGxlYXJuIGFsbCB0aGUgc2xpZGVz