Edit D:\app\Administrator\product\11.2.0\dbhome_1\md\jlib\oracle\spatial\network\NetworkManager.class
?? 1? y7 k89:;9<9=9>9?9@9A9B9C kB9DE9F9G kHI9J9K9L9M9N9O PQ PR ST??? U SV WX WY SZ S[ S\ S] S^ S_ S` Sa bc kd be bf ge gf kh gi gj <k <l <m ?n ?o gp kq br bst gu gv gw gx gy gz{| D7}~ ? ?}?}?? D???? ??? P7? P?? P?? ????? ????? ??? k???}????}????}?}?}?????????}????}?????}???}?????????}????????????????}?????????? D?? D?????????????? ?? ?? ???????????? ?7 ????? ???? ?? ?? ???? ?? k k ? ?7 ?7 ? ? ? ? ? ? ? ? ? ?7 ? < ?? ? ? ?7 ? ?l ?m? ? ?! ?"9#9$9%& E'( )* ?+, ?- k. / <+ ?0 ?1 ?2;3 4;+ ?56 7 ?8 k9 k:; ?< ?= ??> 7 ?@A@B ?C ?D ?E ?FG H I J K L ? kM gN gO gP gQ R ?S T UV &W X Y ?Z ?[ \ ] ^ _ ` ?a b c d e f ?g h i jk l m ?n op @q <r}s}tu Ev kR ?ow ?xyz ?{ ?| ?{}} <~ <?? ?????????? ?? ?? ??? ?? &? k?? k?? ???? k7? y? m? <? <? <? <? kw <? ?? 7 k?? PathNodeGoal InnerClasses adapter 'Loracle/spatial/network/NetworkAdapter; MAX_NO_OF_NETWORKS I networkCache Ljava/util/HashMap; <init> ()V Code LineNumberTable getVersion ()Ljava/lang/String; readNetwork I(Ljava/sql/Connection;Ljava/lang/String;)Loracle/spatial/network/Network; Exceptions J(Ljava/sql/Connection;Ljava/lang/String;Z)Loracle/spatial/network/Network; f(Ljava/sql/Connection;Ljava/lang/String;Loracle/spatial/network/MBR;Z)Loracle/spatial/network/Network; K(Ljava/sql/Connection;Ljava/lang/String;IZ)Loracle/spatial/network/Network; ?(Ljava/sql/Connection;Ljava/lang/String;Loracle/spatial/network/MBR;ZLoracle/spatial/network/UserDataIO;)Loracle/spatial/network/Network; ?(Ljava/sql/Connection;Ljava/lang/String;ZLoracle/spatial/network/UserDataIO;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Loracle/spatial/network/Network; ?(Ljava/sql/Connection;Ljava/lang/String;ZLoracle/spatial/network/UserDataIO;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Loracle/spatial/network/Network; n(Ljava/sql/Connection;Ljava/lang/String;IZLoracle/spatial/network/UserDataIO;)Loracle/spatial/network/Network; readNetworkMetadata *(Ljava/sql/Connection;)Ljava/util/HashMap; Q(Ljava/sql/Connection;Ljava/lang/String;)Loracle/spatial/network/NetworkMetadata; @(Ljava/sql/Connection;I)Loracle/spatial/network/NetworkMetadata; writeNetworkMetadata @(Ljava/sql/Connection;Loracle/spatial/network/NetworkMetadata;)V writeNetwork 8(Ljava/sql/Connection;Loracle/spatial/network/Network;)V [(Ljava/sql/Connection;Loracle/spatial/network/Network;Loracle/spatial/network/UserDataIO;)V readNetworkConstraints??? readNetworkConstraint S(Ljava/sql/Connection;Ljava/lang/String;)Loracle/spatial/network/NetworkConstraint; readNetworkConstraintObject ;(Ljava/sql/Connection;Ljava/lang/String;)Ljava/lang/Object; readJavaObject registerNetworkConstraint `(Ljava/sql/Connection;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V deregisterNetworkConstraint *(Ljava/sql/Connection;Ljava/lang/String;)V registerJavaObject r(Ljava/sql/Connection;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V deregisterJavaObject mcst B(Loracle/spatial/network/Network;)Loracle/spatial/network/Network; mcstLinkArray @(Loracle/spatial/network/Network;)[Loracle/spatial/network/Link; isReachable B(Loracle/spatial/network/Network;IILoracle/spatial/network/MBR;I)Z %(Loracle/spatial/network/Network;II)Z O(Loracle/spatial/network/Network;IILoracle/spatial/network/NetworkConstraint;)Z findConnectedComponents #(Loracle/spatial/network/Network;)I findConnectedComponentVector 4(Loracle/spatial/network/Network;)Ljava/util/Vector; findReachableNodes A(Loracle/spatial/network/Network;I)[Loracle/spatial/network/Node; ](Loracle/spatial/network/Network;ILoracle/spatial/network/MBR;)[Loracle/spatial/network/Node; ^(Loracle/spatial/network/Network;ILoracle/spatial/network/MBR;I)[Loracle/spatial/network/Node; _(Loracle/spatial/network/Network;ILoracle/spatial/network/MBR;II)[Loracle/spatial/network/Node; ?(Loracle/spatial/network/Network;ILoracle/spatial/network/MBR;ILoracle/spatial/network/NetworkConstraint;I)[Loracle/spatial/network/Node; k(Loracle/spatial/network/Network;ILoracle/spatial/network/NetworkConstraint;)[Loracle/spatial/network/Node; findReachingNodes shortestPathAStar ?(Loracle/spatial/network/Network;IILoracle/spatial/network/NetworkConstraint;Loracle/spatial/network/AStarCostFunction;D)Loracle/spatial/network/Path; k(Loracle/spatial/network/Network;IILoracle/spatial/network/NetworkConstraint;)Loracle/spatial/network/Path; p(Loracle/spatial/network/Network;IDIDLoracle/spatial/network/NetworkConstraint;)Loracle/spatial/network/SubPath; A(Loracle/spatial/network/Network;II)Loracle/spatial/network/Path; shortestPath o(Loracle/spatial/network/Network;IIDLoracle/spatial/network/NetworkConstraint;)Loracle/spatial/network/SubPath; o(Loracle/spatial/network/Network;IDILoracle/spatial/network/NetworkConstraint;)Loracle/spatial/network/SubPath; f(Loracle/spatial/network/Path;Loracle/spatial/network/NetworkConstraint;)Loracle/spatial/network/Path; shortestPathDijkstra shortestPaths k(Loracle/spatial/network/Network;ILoracle/spatial/network/NetworkConstraint;)[Loracle/spatial/network/Path; A(Loracle/spatial/network/Network;I)[Loracle/spatial/network/Path; allPaths E(Loracle/spatial/network/Network;IIIDI)[Loracle/spatial/network/Path; m(Loracle/spatial/network/Network;IILoracle/spatial/network/NetworkConstraint;I)[Loracle/spatial/network/Path; @(Loracle/spatial/network/Path;IDI)[Loracle/spatial/network/Path; withinCost l(Loracle/spatial/network/Network;IDLoracle/spatial/network/NetworkConstraint;)[Loracle/spatial/network/Path; B(Loracle/spatial/network/Network;ID)[Loracle/spatial/network/Path; withinReachingCost nearestNeighbors ?(Loracle/spatial/network/Network;IILoracle/spatial/network/NetworkConstraint;Loracle/spatial/network/GoalNode;)[Loracle/spatial/network/Path; l(Loracle/spatial/network/Network;IILoracle/spatial/network/NetworkConstraint;)[Loracle/spatial/network/Path; B(Loracle/spatial/network/Network;II)[Loracle/spatial/network/Path; nearestReachingNeighbors c(Loracle/spatial/network/Network;IILoracle/spatial/network/GoalNode;)[Loracle/spatial/network/Path; validateNetworkSchema ;(Ljava/sql/Connection;Ljava/lang/String;)Ljava/lang/String; networkExists *(Ljava/sql/Connection;Ljava/lang/String;)Z dropNetwork createNetworkHiearchy &(Loracle/spatial/network/Network;I[I)V createRefConstraints enableRefConstraints getMaxFlow 7(Loracle/spatial/network/Network;IILjava/util/Vector;)J? disableRefConstraints dropRefConstraints findMBR =([Loracle/spatial/network/Node;D)Loracle/spatial/network/MBR; tspPath k(Loracle/spatial/network/Network;[ILoracle/spatial/network/NetworkConstraint;)Loracle/spatial/network/Path; m(Loracle/spatial/network/Network;[IZZLoracle/spatial/network/NetworkConstraint;)Loracle/spatial/network/Path; i([Loracle/spatial/network/Node;ZZLoracle/spatial/network/NetworkConstraint;)Loracle/spatial/network/Path; tspOrder [([Loracle/spatial/network/Node;Loracle/spatial/network/Path;)[Loracle/spatial/network/Node; findInternalLinks >([Loracle/spatial/network/Node;)[Loracle/spatial/network/Link; findExternalLinks \([Loracle/spatial/network/Node;[Loracle/spatial/network/Node;)[Loracle/spatial/network/Link; printCostMatrix 6(Loracle/spatial/network/Network;Ljava/util/HashMap;)V makeSpatial Y(Loracle/spatial/network/Network;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V makeLogical #(Loracle/spatial/network/Network;)V insertGeomMetadata a(Ljava/sql/Connection;Ljava/lang/String;Ljava/lang/String;ILoracle/spatial/network/SDODimArray;)V getNetworkNameFromID *(Ljava/sql/Connection;I)Ljava/lang/String; getNetworkIDFromName *(Ljava/sql/Connection;Ljava/lang/String;)I getNetworkNames getNetworkIDs isFunctionName (Ljava/lang/String;)Z assignID \(Loracle/spatial/network/Network;Loracle/spatial/network/Node;)Loracle/spatial/network/Node; <(Loracle/spatial/network/Path;)Loracle/spatial/network/Path; >([Loracle/spatial/network/Path;)[Loracle/spatial/network/Path; C(Loracle/spatial/network/SubPath;Z)Loracle/spatial/network/SubPath; D([Loracle/spatial/network/SubPath;)[Loracle/spatial/network/SubPath; getNetworkFromPath ?(Loracle/spatial/network/Path;)Loracle/spatial/network/Network; isNetworkPartitioned validateNetwork 4(Loracle/spatial/network/Network;)Ljava/lang/String; isNetworkInCache getNetworkFromCache 4(Ljava/lang/String;)Loracle/spatial/network/Network; addNetworkToCache 5(Ljava/lang/String;Loracle/spatial/network/Network;)V removeNetworkFromCache (Ljava/lang/String;)V getNetworkCacheMap ()Ljava/util/HashMap; clearNetworkCache findNodesWithinDegreeBounds C(Loracle/spatial/network/Network;III)[Loracle/spatial/network/Node; findMaxNodeDegree $(Loracle/spatial/network/Network;I)I findMinNodeDegree nodeDegree !(ILoracle/spatial/network/Node;)I traceOut o(Loracle/spatial/network/Network;IDLoracle/spatial/network/NetworkConstraint;)[Loracle/spatial/network/SubPath; p(Loracle/spatial/network/Network;IDDLoracle/spatial/network/NetworkConstraint;)[Loracle/spatial/network/SubPath; traceIn readGeometryFromDB s(Ljava/sql/Connection;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/util/HashMap; updateNodes :(Ljava/sql/Connection;Loracle/spatial/network/Network;[I)V updateLinks updatePaths updateSubPaths getPathGeomFromDB ?(Ljava/sql/Connection;Loracle/spatial/network/Network;Loracle/spatial/network/Path;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;D)Loracle/spatial/geometry/JGeometry; updateNetworkLinkCost \(Ljava/sql/Connection;Loracle/spatial/network/Network;Ljava/lang/String;Ljava/lang/String;)V updateNetworkNodeCost convertNetworkBetweenWorkspaces ?(Ljava/sql/Connection;Loracle/spatial/network/Network;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Loracle/spatial/network/Network; newPathToDestination ?(Loracle/spatial/network/Network;Loracle/spatial/network/Path;ILoracle/spatial/network/NetworkConstraint;)Loracle/spatial/network/Path; <clinit> SourceFile NetworkManager.java??|}??? oracle/spatial/network/MBR?????????????????? !oracle/spatial/network/UserDataIO?????? (oracle/spatial/network/NetworkConstraint????????????????????????????????????????????????????????????????????????? oracle/spatial/network/Path???????????? oracle/spatial/network/GoalNode java/lang/StringBuffer???????????? Connection is NULL! ?? Network Name is NULL! ?????? java/lang/StringBuilder Node Table: ?? Doesn't exist! ?? SELECT * FROM ??? WHERE ROWNUM = 1 ???????? NODE_ID?? Node Column: NODE_ID missing! Node Column: missing! ?? GEOM_ID MEASURE -Node LRS Column: GEOM_ID or MEASURE missing! ?? HIERARCHY_LEVEL PARENT_NODE_ID ENode Hierarchical Column: HIERARCHY_LEVEL or PARENT_NODE_ID missing! ?????? Link Table: LINK_ID Link Column: LINK_ID missing! START_NODE_ID $Link Column: START_NODE_ID missing! END_NODE_ID "Link Column: END_NODE_ID missing! Link Column: ?? START_MEASURE END_MEASURE CLink LRS Column: GEOM_ID or START_MEASURE or END_MEASURE missing! ?? TOPO_GEOMETRY )Link Topo Column: TOPO_GEOMETRY missing! PARENT_LINK_ID 3Link Hierarchical Column: PARENT_LINK_ID missing! ?? LRS Table: #LRS Table Column: GEOM_ID missing! ?? Path Table: PATH_ID $Path Table Column: PATH_ID missing! *Path Table Column: START_NODE_ID missing! (Path Table Column: END_NODE_ID missing! COST !Path Table Column: COST missing! Path Table Geometry Column: ?? SubPath Table: SUBPATH_ID *SubPath Table Column: SUBPATH_ID missing! REFERENCE_PATH_ID 1SUBPath Table Column: REFERENCE_PATH_ID missing! START_LINK_INDEX 0SubPath Table Column: START_LINK_INDEX missing! END_LINK_INDEX .SubPath Table Column: END_LINK_INDEX missing! START_PERCENTAGE 0SubPath Table Column: START_PERCENTAGE missing! END_PERCENTAGE .SubPath Table Column: END_PERCENTAGE missing! $SubPath Table Column: COST missing! SubPath Table Geometry Column: ?? Path-Link Table: )Path-Link Table Column: PATH_ID missing! )Path-Link Table Column: LINK_ID missing! SEQ_NO (Path-Link Table Column: SEQ_NO missing! java/sql/SQLException java/lang/Exception?? TRUE ASELECT COUNT(*) FROM USER_SDO_NETWORK_METADATA WHERE NETWORK = ??????????????????? #begin sdo_net.drop_network(?); end;????? *oracle/spatial/network/PartitionMultilevel?? -begin sdo_net.create_ref_constraints(?); end; -begin sdo_net.enable_ref_constraints(?); end; "oracle/spatial/network/FlowNetwork?? +oracle/spatial/network/NetworkDataException -the resultant link flow Vector cannot be null????? .begin sdo_net.disable_ref_constraints(?); end; +begin sdo_net.drop_ref_constraints(?); end;????? oracle/spatial/network/Node??? oracle/spatial/network/NDMTimer java/util/HashMap? TSP init Failed... oracle/spatial/network/PathImpl DURATION java/util/Vector? [Loracle/spatial/network/Node; java/util/HashSet? oracle/spatial/network/Link [Loracle/spatial/network/Link;?????????? ?? ( ) ? oracle/spatial/network/NodeImpl!" "oracle/spatial/network/NetworkImpl#" $?%?&'"()*?+" (oracle/spatial/network/NetworkAdapterSDO,-.??? oracle/spatial/network/Network/01 $oracle/spatial/network/PriorityQueue2345??67?8?9?:? oracle/spatial/network/CostNode?;<=>??@?? ! "#!#"$%A?BCDE java/lang/Integer?"F"GHIJK?LCMENOP"QRSTUCVEWXY"Z[\]^C_E`a oracle/spatial/network/SubPathb"cdefgh *oracle/spatial/network/NetworkMetadataImpli?jk?l? java/lang/Stringmn $null node/link geometry information! Inconsisten node geometry count! Inconsisten link geometry count! !oracle/spatial/geometry/JGeometryopqrs"tuvw Cost table: not found...xy does not contain column... & does not contain given cost column... SELECT , FROM z{|u}~ DiffNodes???&' DiffLinks(' workspace?? LATEST savepoint %oracle/spatial/network/NetworkManager 2oracle/spatial/network/NetworkManager$PathNodeGoal?????????`??? ?~ java/lang/Object java/lang/ClassNotFoundException java/lang/InstantiationException java/lang/IllegalAccessException java/io/IOException %oracle/spatial/network/NetworkAdapter oracle/spatial/network/Kruskal oracle/spatial/network/Bfs getNode (I)Loracle/spatial/network/Node; g(Loracle/spatial/network/Node;Loracle/spatial/network/Node;Loracle/spatial/network/NetworkConstraint;)Z oracle/spatial/network/Dfs findComponents findComponentVector g(Loracle/spatial/network/Node;Loracle/spatial/network/NetworkConstraint;)[Loracle/spatial/network/Node; ?(Loracle/spatial/network/Node;Loracle/spatial/network/MBR;ILoracle/spatial/network/NetworkConstraint;I)[Loracle/spatial/network/Node; (oracle/spatial/network/ShortestPathAStar oracle/spatial/network/Dijkstra isSimple ()Z getStartNode ()Loracle/spatial/network/Node; getEndNode getNetwork "()Loracle/spatial/network/Network; getID ()I &oracle/spatial/network/NetworkMetadata getNodeGeomMetadata +()Loracle/spatial/network/GeometryMetadata; 'oracle/spatial/network/GeometryMetadata getTableName (Z)Ljava/lang/String; getColumnName getNodeCostColumn getNodeDurationColumn append ,(Ljava/lang/String;)Ljava/lang/StringBuffer; java/sql/Connection createStatement ()Ljava/sql/Statement; %oracle/spatial/network/NetworkUtility tableExists -(Ljava/lang/String;)Ljava/lang/StringBuilder; toString oracle/spatial/util/Util checkSQLName '(Ljava/lang/String;I)Ljava/lang/String; java/sql/Statement executeQuery ((Ljava/lang/String;)Ljava/sql/ResultSet; getColumnNames )(Ljava/sql/ResultSet;)Ljava/util/HashSet; java/sql/ResultSet close contains (Ljava/lang/Object;)Z isLRSGeometry isHierarchical getLinkGeomMetadata getLinkCostColumn getLinkDurationColumn isSpatial isTopoGeometry getLRSGeomMetadata getPathGeomMetadata getSubPathGeomMetadata getPathLinkTableName length prepareStatement 0(Ljava/lang/String;)Ljava/sql/PreparedStatement; java/sql/PreparedStatement setString (ILjava/lang/String;)V ()Ljava/sql/ResultSet; next getInt (I)I java/lang/System err Ljava/io/PrintStream; getMessage java/io/PrintStream println prepareCall 0(Ljava/lang/String;)Ljava/sql/CallableStatement; java/sql/CallableStatement executeUpdate createHierarchy %(Loracle/spatial/network/Network;II)V clear (Ljava/util/Vector;)J oracle/spatial/network/TspPath getCostDurationMap ^([Loracle/spatial/network/Node;ZLoracle/spatial/network/NetworkConstraint;)Ljava/util/HashMap; initOrder ?([Loracle/spatial/network/Node;ZLjava/util/HashMap;Ljava/util/HashMap;Loracle/spatial/network/NetworkConstraint;)[Loracle/spatial/network/Node; out refineOrder ?([Loracle/spatial/network/Node;ZLjava/util/HashMap;Ljava/util/HashMap;Loracle/spatial/network/NetworkConstraint;I)[Loracle/spatial/network/Node; findPath h([Loracle/spatial/network/Node;ZLoracle/spatial/network/NetworkConstraint;)Loracle/spatial/network/Path; makeTspPath (Z)V get &(Ljava/lang/Object;)Ljava/lang/Object; setTspNodeOrder !([Loracle/spatial/network/Node;)V setTspNodeDuration 4([Loracle/spatial/network/Node;Ljava/util/HashMap;)V arraycopy *(Ljava/lang/Object;ILjava/lang/Object;II)V addElement (Ljava/lang/Object;)V getNodeArray ()[Loracle/spatial/network/Node; size toArray (([Ljava/lang/Object;)[Ljava/lang/Object; java/util/Set add getIncidentLinks ()[Loracle/spatial/network/Link; 'oracle/spatial/network/AllShortestPaths indexOf (Ljava/lang/String;)I getMaxNodeID setID (I)V advanceMaxNodeID getMaxPathID isTemporaryCachingEnabled addTemporatoryElement advanceMaxPathID getReferencePath ()Loracle/spatial/network/Path; getMaxSubPathID advanceMaxSubPathID readNoOfPartitions @(Ljava/sql/Connection;Loracle/spatial/network/NetworkMetadata;)I validateReference put 8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; remove getNodes ()Ljava/util/Iterator; java/util/Iterator hasNext ()Ljava/lang/Object; isActive getInDegree getOutDegree getDegree !(Loracle/spatial/network/Node;D)V insert (Ljava/lang/Comparable;)V isEmpty deleteMin ()Ljava/lang/Comparable; disableCaching readNodesFromDB L(Ljava/sql/Connection;Loracle/spatial/network/Network;[I)Ljava/util/HashMap; containsNode (I)Z deleteNode addNode (Loracle/spatial/network/Node;)V copyNode =(Loracle/spatial/network/Node;Loracle/spatial/network/Node;)V enableCaching readLinksFromDB containsLink getLink (I)Loracle/spatial/network/Link; deleteLink addLink (Loracle/spatial/network/Link;)V copyLink =(Loracle/spatial/network/Link;Loracle/spatial/network/Link;)V readPathsFromDB containsPath getPath (I)Loracle/spatial/network/Path; deletePath addPath (Loracle/spatial/network/Path;)V copyPath =(Loracle/spatial/network/Path;Loracle/spatial/network/Path;)V readSubPathsFromDB containsSubPath getSubPath #(I)Loracle/spatial/network/SubPath; deleteSubPath addSubPath #(Loracle/spatial/network/SubPath;)V copySubPath C(Loracle/spatial/network/SubPath;Loracle/spatial/network/SubPath;)V getMetadata *()Loracle/spatial/network/NetworkMetadata; getCategory getLinkArray getNodeTableName getLinkTableName valueOf (I)Ljava/lang/String; setGeometry &(Loracle/spatial/geometry/JGeometry;)V linkGeometry B(Loracle/spatial/network/Link;)Loracle/spatial/geometry/JGeometry; setCategory computeGeometry (D)V getGeometry %()Loracle/spatial/geometry/JGeometry; columnExists <(Ljava/sql/Connection;Ljava/lang/String;Ljava/lang/String;)Z getDouble (I)D setCost getNetworkDiff ?(Ljava/sql/Connection;Loracle/spatial/network/Network;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/HashMap; elementAt (I)Ljava/lang/Object; intValue setUserData '(Ljava/lang/String;Ljava/lang/Object;)V getClass ()Ljava/lang/Class; G(Loracle/spatial/network/NetworkManager;Loracle/spatial/network/Path;)V (Loracle/spatial/network/Node;)Z (Loracle/spatial/network/Node;)I getNoOfLinks !(II)Loracle/spatial/network/Path; 4(Loracle/spatial/network/Path;)Ljava/util/ArrayList; java/util/ArrayList !ky |} ~ ?? ? ?? ? *? ? ? ? ?? ? ! ? ? ? ? ? ?? ? ( ? *+? ? ? ? ?? ? ? ?? ? ( ? *+? ? ? ? ?? ? ? ?? ? % ? *+,? ? ? ?? ? ? ?? ? % ? *+? ? ? ?? ? ? ?? ? ' ? *+,? ? ? ?? ? ? ?? ? - ? *+-? ? ? ?? ? ? ?? ? 4 6? *+-? ? ? ? ? ? ?? ? ' ? *+? ? ? O? ? ? ?? ? "